Python:計算機二級:簡單應用

文章目錄

  • 簡單應用
    • 第一題
    • 第二題
    • 第三題
    • 第四題
    • 題型共同特點
      • 核心知識點講解
      • 解題通用方法步驟
    • 操作的難點
      • 1.數據的統計
      • 2.數據的篩選
        • 1. **條件判斷篩選**
        • 2. **結合文件操作篩選**
        • 3. **多條件組合篩選**
    • 類似題目
    • 其它一題

簡單應用

第一題

題目
在考生文件夾下的PY202.py文件中,編寫Python代碼實現以下功能:

通過鍵盤輸入某班同學就業的行業名稱,行業名稱之間用空格間隔,回車結束輸入。統計各個行業就業的學生數量,并按照數量從高到低的方式輸出,輸出格式為 “行業名稱:數量”,冒號為英文冒號。
解答

names = input("請輸入各個同學行業名稱,行業名稱之間用空格間隔(回車結束輸入):")
t = names.split(" ")
d = {}
for i in range(len(t)):d[t[i]] = d.get(t[i], 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)  # 按照數量排序
for k in ls:# 直接解包 kzy, num = kprint("{}:{}".format(zy, num))

第二題

題目
在考生文件夾下的PY202.py文件中編寫代碼,實現以下功能:

通過鍵盤輸入小明學習的課程名稱及考分信息,信息間用空格分隔,每個課程一行,空行回車結束錄入。之后在屏幕輸出得分最高的課程及成績,得分最低的課程及成績,以及平均分(保留2位小數),輸出格式為 “最高分課程是[課程名] [分數],最低分課程是[課程名] [分數],平均分是[平均分]”,其中逗號為英文逗號。

解答

data = input()  # 課程名 考分
scores = []  # 用于存儲課程名和分數的列表
while data:course, score = data.split()  # 拆分輸入的課程名和分數scores.append((course, int(score)))  # 將課程名和轉換為整數的分數存入列表data = input()
# 提取所有分數
all_scores = [s[1] for s in scores]
# 找到最高分和對應的課程
max_course, max_score = max(scores, key=lambda x: x[1])
# 找到最低分和對應的課程
min_course, min_score = min(scores, key=lambda x: x[1])
# 計算平均分
average_score = sum(all_scores) / len(all_scores)
print("最高分課程是{} {}, 最低分課程是{} {}, 平均分是{:.2f}".format(max_course, max_score, min_course, min_score, average_score))

第三題

問題
這是一道Python編程題目,要求使用字典和列表型變量完成村長選舉相關功能:

  1. name.txt 獲取40名有選舉權和被選舉權的村民名單,從 vote.txt 獲取投票信息。
  2. 問題1:從 vote.txt 中篩選出無效票(選票中名字數量不為1或者名字不在 name.txt 列表中的票),并寫入 vote1.txt
  3. 問題2:找出當選村長的名字及其得票數。
    需要補充考生文件夾下 PY202.py 中的代碼來完成程序。

解答

f=open("name.txt")
names=f.readlines()
f.close()
f=open("vote.txt")
votes=f.readlines()
f.close()
f=open("vote1.txt","w")
D={}
NUM=0
for vote in votes:num = len(vote.split())if num==1 and vote in names:D[vote[:-1]]=D.get(vote[:-1],0)+1NUM+=1else:f.write(vote)
f.close()        
l=list(D.items())
l.sort(key=lambda s:s[1],reverse=True)
name=l[0][0]
score=l[0][1]
print("有效票數為:{} 當選村長村民為:{},票數為:{}".format(NUM,name,score))

第四題

題目
這是一道Python編程題目,要求利用字典和列表變量對明星投票數據進行分析,投票信息在vote.txt文件中。具體有兩個問題:

  • 問題1:統計有效票張數,需補充PY202 - 1.py中的代碼完成程序,分值7分。
  • 問題2:給出當選最有人氣明星的姓名和票數,需補充PY202 - 2.py中的代碼完成程序,分值8分。有效票指一行只有一個明星姓名的投票,在有效票中得票最多的明星當選 。

解答

f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:num = len(name.split())if num==1:n+=1
print("有效票{}張".format(n))
f = open("vote.txt")
names = f.readlines()
f.close()
D = {}
for name in names:if len(name.split()) == 1:# 修正此處,保證鍵的一致性D[name[:-1]] = D.get(name[:-1], 0) + 1
l = list(D.items())
l.sort(key=lambda s: s[1], reverse=True)
name = l[0][0]
score = l[0][1]
print("最具人氣明星為:{},票數為:{}".format(name, score))

題型共同特點

這些題目均圍繞 數據統計與分析 展開,核心場景包括:

  • 數據輸入:通過文件讀取(如 vote.txt)或鍵盤輸入獲取原始數據。
  • 數據處理:對數據進行篩選(如判斷有效票)、統計(如行業數量、票數統計)。
  • 結果輸出:對處理后的數據排序,按指定格式輸出關鍵結果(如統計數量、最值信息)。

核心知識點講解

  1. 文件操作
    • 打開與讀取:使用 open("文件名", "r") 打開文件,readlines() 讀取所有行,處理后用 close() 關閉文件。
    • 寫入文件:以寫模式 open("文件名", "w") 打開文件,用 write() 寫入內容。
  2. 字符串處理
    • 分割字符串split() 方法按空格等分隔符拆分字符串,如 name.split() 用于獲取每行的元素數量。
  3. 字典統計
    • 利用字典鍵值對統計數據,如 D[key] = D.get(key, 0) + 1D.get(key, 0) 避免鍵不存在時報錯,初始值為 0,每次出現對應鍵時數量加 1
  4. 列表排序
    • list.sort(key=lambda x: x[1], reverse=True):按列表元素的第二個值(如票數、分數)降序排序,lambda 定義排序依據。
  5. 輸入輸出
    • 輸入input() 接收鍵盤輸入,結合循環處理多行輸入。
    • 輸出格式化print("{}:{}".format(zy, num)),用占位符 {} 匹配變量,實現指定格式輸出。

解題通用方法步驟

  1. 數據讀取
    • 文件場景:用 open() 打開文件,readlines() 讀取內容,關閉文件。
    • 輸入場景:input() 接收輸入,循環處理多行數據。
  2. 數據篩選與統計
    • 遍歷數據,用條件判斷(如 if len(name.split()) == 1)篩選有效數據。
    • 借助字典統計數量(如行業數、票數)。
  3. 結果處理
    • 將字典轉換為列表(如 list(D.items())),排序獲取最值(如最高票數、最低分)。
  4. 格式化輸出
    • 按題目要求格式,用 format() 或 f-string 輸出結果,如 print("最具人氣明星為:{},票數為:{}".format(name, score))

操作的難點

1.數據的統計

這一部分主要要用到字典的鍵值對特性,將需要統計的對象(如明星姓名、行業名稱)作為鍵,出現次數作為值。
代碼的模板為:

data_dict = {}  
for item in data_list:  data_dict[item] = data_dict.get(item, 0) + 1  # 若鍵存在,值+1;若不存在,初始化為0再+1  

代碼的解釋:

  • 首先,創造一個字典
  • 其次,在我們上面從文本中讀取的字符串進行循環,逐一判斷是誰的票,是這個人的票就加一,不是這個人的票就創建這個人的鍵,然后初始為0,再加1
  • 這個循環過后,我們就得到了一個統計數據的鍵值對——字典。
    存在這樣的一種:若數據包含多種屬性(如課程名 + 分數),可先提取統計關鍵項再操作,我們通過解包操作加以實現:
    示例代碼
course_data = [("數學", 90), ("語文", 85), ("數學", 95)]  
course_count = {}  
for course, _ in course_data:  course_count[course] = course_count.get(course, 0) + 1  
# 結果:{'數學': 2, '語文': 1}  

2.數據的篩選

1. 條件判斷篩選

通過 if 語句定義篩選規則,常見場景:

  • 格式篩選:如“一行只有一個姓名的投票才有效”,用 len(name.split()) == 1 判斷。
  • 范圍篩選:如“分數在 60 分以上為及格”,用 score >= 60 判斷。
  • 代碼模板
    valid_data = []  
    for item in raw_data:  if 篩選條件:  # 如 len(item.split()) == 1  valid_data.append(item)  
    
2. 結合文件操作篩選

從文件讀取數據時,邊讀取邊篩選。

  • 示例:篩選有效投票并寫入新文件
    with open("vote.txt", "r") as f:  votes = f.readlines()  
    valid_votes = []  
    for vote in votes:  if len(vote.split()) == 1:  # 一行一個姓名  valid_votes.append(vote.strip())  # 去除換行符  
    # 將有效投票寫入新文件  
    with open("valid_vote.txt", "w") as f:  f.writelines(valid_votes)  
    
    3. 多條件組合篩選

復雜場景需多個條件組合,用邏輯運算符(and/or)連接。

  • 示例:篩選既有效又符合特定范圍的數據
    # 假設數據格式為 [姓名, 票數]  
    data = [("張三", 10), ("李四", 5), ("王五", 20)]  
    filtered_data = []  
    for name, count in data:  if len(name) > 2 and count > 10:  # 姓名長度超2字且票數超10  filtered_data.append((name, count))  
    # 結果:[("王五", 20)]  
    

類似題目

題目
考生文件夾下存在3個Python源文件(分別對應3個問題)與1個文本文件(輸入數據“命運.txt”),需按源文件內部說明修改代碼,實現以下功能:

  • 問題1(5分):在PY301-1.py中修改代碼,對“命運.txt”進行字符頻次統計,輸出頻次最高的中文字符(不含標點符號)及其頻次,格式為“字符:頻次”(如“理:224”)。
  • 問題2(5分):在PY301-2.py中修改代碼,對“命運.txt”進行字符頻次統計,按頻次由高到低,屏幕輸出前10個頻次最高的字符(不含回車符),字符連續無間隔輸出。
  • 問題3(10分):在PY301-3.py中修改代碼,對“命運.txt”進行字符頻次統計,將所有字符(含中文、標點、英文等符號,不含空格和回車)按頻次從高到低排序,將排序后的字符及頻次輸出到考生文件夾下的“命運-頻次排序.txt”。字符與頻次間用英文冒號“:”分隔,字符間用英文逗號“,”分隔(參考CSV格式,最后無逗號)。

解答

# 打開文件
with open('命運.txt', 'r', encoding='utf-8') as f:txt = f.read()# 定義字典用于統計字符頻次
d = {}
# 遍歷文本中的每個字符
for i in txt:# 過濾掉標點符號if i not in ",。?!《》【】[]“”‘’":# 統計字符頻次d[i] = d.get(i, 0) + 1# 將字典的鍵值對轉換為列表
ls = list(d.items())
# 對列表按字符頻次從高到低排序
ls.sort(key=lambda x: x[1], reverse=True)
# 輸出頻次最高的字符及其頻次
print("{}:{}".format(ls[0][0], ls[0][1]))
# 打開文件
with open('命運.txt', 'r', encoding='utf-8') as f:txt = f.read()# 定義字典用于統計字符頻次
d = {}
# 遍歷文本中的每個字符
for i in txt:# 過濾掉回車符if i not in '\n':# 統計字符頻次d[i] = d.get(i, 0) + 1# 將字典的鍵值對轉換為列表
ls = list(d.items())
# 對列表按字符頻次從高到低排序
ls.sort(key=lambda x: x[1], reverse=True)# 輸出前 10 個頻次最高的字符
for k in range(10):print(ls[k][0], end='')
# 打開命運.txt 文件用于讀取
with open('命運.txt', 'r', encoding='utf-8') as f:txt = f.read()# 定義字典用于統計字符頻次
d = {}
# 遍歷文本中的每個字符
for i in txt:# 過濾掉空格和回車符if i not in ' \n':# 統計字符頻次d[i] = d.get(i, 0) + 1# 將字典的鍵值對轉換為列表
ls = list(d.items())
# 對列表按字符頻次從高到低排序
ls.sort(key=lambda x: x[1], reverse=True)# 用于存儲格式化后的字符和頻次字符串
result_str = []
# 遍歷排序后的列表
for char, freq in ls:result_str.append(f"{char}:{freq}")# 將列表元素用逗號連接成字符串
output_str = ','.join(result_str)# 打開命運-頻次排序.txt 文件用于寫入
with open('命運-頻次排序.txt', 'w', encoding='utf-8') as fi:fi.write(output_str)

其它一題

題目
題目是在 PY202.py 中完善代碼,根據字典查找用戶信息,生成驗證碼。首先,導入隨機模塊生成驗證碼。然后,獲取用戶輸入,檢查是否在字典中。存在的話,生成四位數驗證碼,輸出信息;不存在則提示。
解析

import random
random.seed(2)
pdict = {'Alice': ['123456789'],'Bob': ['234567891'],'Lily': ['345678912'],'Jane': ['456789123']
}
name = input('請輸入一個人名:')
if name in pdict:print("{} {} {}".format(name, pdict.get(name)[0], random.randint(1000, 9999)))
else:print("對不起,您輸入的用戶信息不存在。")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73548.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73548.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73548.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server 2022常見問題解答

以下是SQL Server 2022的常見問題解答,按主題分類整理: 一、安裝與升級 SQL Server 2022的系統要求是什么? 支持的操作系統:Windows Server 2016及以上、Linux(Ubuntu 20.04/22.04, RHEL 8/9等)。內存:至少4GB(建議8GB+)。磁盤空間:6GB以上,具體取決于安裝組件。如何…

力扣hot100_二分查找

二分查找 hot100_34.在排序數組中查找元素的第一個和最后一個位置 給你一個按照非遞減順序排列的整數數組 nums,和一個目標值 target。請你找出給定目標值在數組中的開始位置和結束位置。 如果數組中不存在目標值 target,返回 [-1, -1]。 你必須設計…

PostgreSQL詳解

第一章:環境部署與基礎操作 1.1 多平臺安裝詳解 Windows環境 圖形化安裝 下載EnterpriseDB安裝包(含pgAdmin) 關鍵配置項說明: # postgresql.conf優化項 max_connections 200 shared_buffers 4GB work_mem 32MB 服務管理命…

conda install 慢

針對 Solving environment: failed with initial frozen solve. Retrying with flexible solve 錯誤,以下是綜合解決方案: 一、核心解決方法? ?更新 Conda 至最新版本? 舊版本 Conda 的依賴解析算法可能存在缺陷,執行以下命令升級&#…

# 使用自定義Shell腳本hello快速配置Linux用戶賬戶

使用自定義Shell腳本快速配置Linux用戶賬戶 在學校實驗室管理Linux服務器,或者公司小團隊管理服務器時,大家需要一個能隔離自己服務,但是自己又需要對服務器的完整權限的情形。創建和配置用戶賬戶是一項常見但繁瑣的任務。特別是當你需要頻繁…

Unity Animation的其中一種運用方式

Animation是Unity的舊的動畫系統,先說目的,其使用是為了在UI中播放動效,并且在動效播放結束后接自定義事件而設計的 設計的關鍵點在于,這個腳本不是通過Animation直接播放動畫片段,而是通過修改AnimationState的nor…

matplotlib——南丁格爾玫瑰

南丁格爾玫瑰圖(Nightingale Rose Chart),是一種特殊形式的柱狀圖,它以南丁格爾(Florence Nightingale)命名,她在1858年首次使用這種圖表來展示戰爭期間士兵死亡原因的數據。 它將數據繪制在極坐…

TensorFlow面試題及參考答案

目錄 什么是 TensorFlow 的計算圖?詳細描述 TensorFlow 計算圖的組成結構(節點、邊、會話) 它與動態圖(Eager Execution)的區別是什么?TensorFlow 靜態計算圖與動態圖(Eager Execution)的區別及適用場景是什么? 解釋張量(Tensor)的概念及其在 TensorFlow 中的作用…

6.go語言函數

Go語言中的函數是組織代碼的最小單元,用于封裝一段代碼,完成特定的功能。函數的使用可以減少代碼冗余,提高代碼的可讀性和可維護性。 函數的基本定義和語法 在Go語言中,定義一個函數的基本語法如下: func functionN…

SpringCould微服務架構之Docker(4)

Docker ce是社區版。 安裝docker之前,先安裝yum-util 。 安裝docker之前,一定要先關閉防火墻。

Keepalived 實現高可用方案

Keepalived簡介 ?Keepalived? 是一個基于 ?VRRP(Virtual Router Redundancy Protocol)協議?的高可用性解決方案,主要用于實現?服務故障自動切換(Failover)和負載均衡?。通過管理虛擬 IP(VIP&#xf…

WPS JS宏編程教程(從基礎到進階)--第二部分:WPS對象模型與核心操作

第二部分:WPS對象模型與核心操作 WPS對象的屬性、方法、集合 工作簿對象常用表達方式工作表對象常用表達方式單元格對象常用表達方式 單元格操作實戰 單元格復制與重定位單元格偏移與尺寸調整 顏色設置專題 索引顏色與RGB顏色按條件動態設置單元格顏色 第二部分&…

基于DrissionPage的TB商品信息采集與可視化分析

一、項目背景 隨著電子商務的快速發展,淘寶作為中國最大的電商平臺之一,擁有海量的商品信息。這些數據對于市場分析、用戶行為研究以及競爭情報收集具有重要意義。然而,由于淘寶的反爬蟲機制和復雜的頁面結構,直接獲取商品信息并不容易。尤其是在電商行業高速發展的今天,商…

【003安卓開發方案調研】之ReactNative技術開發安卓

基于2025年最新行業動態和搜索資料,以下是針對國內使用React Native(RN)開發安卓應用的深度分析: 一、技術成熟度評估 1. 核心架構升級 新架構全面普及:2024年起,React Native的 新架構(Fabri…

JS數組方法

數組方法 一、數組 JavaScript 數組的大小是可調整的,并且可以包含不同 數據類型。(當不需要這些特性時,請使用 類型數組。) 注:JavaScript 類型數組是類似數組的對象,它提供了一種在內存緩沖區中讀取和寫…

【一起學Rust | Tauri2.0框架】深入淺出 Tauri 2.0 應用調試:從新手到專家的蛻變

前言 Tauri 是一款備受矚目的跨平臺桌面應用開發框架,它允許開發者使用 Web 技術棧(HTML、CSS、JavaScript)構建高性能、安全的原生應用。Tauri 2.0 的發布帶來了諸多令人興奮的新特性和改進,進一步提升了開發體驗和應用性能。然…

Python項目-基于Python的網絡爬蟲與數據可視化系統

1. 項目簡介 在當今數據驅動的時代,網絡爬蟲和數據可視化已成為獲取、分析和展示信息的重要工具。本文將詳細介紹如何使用Python構建一個完整的網絡爬蟲與數據可視化系統,該系統能夠自動從互聯網收集數據,進行處理分析,并通過直觀…

TCP/IP三次握手的過程,為什么要3次?

一:過程 第一次(SYN): 客戶端發送一個帶有SYN標志的TCP報文段給服務器,設置SYN1,并攜帶初始序列號Seqx(隨機值),進入SYN_SENT狀態。等待服務器相應。 第二次&#xff08…

消息隊列性能比拼: Kafka vs RabbitMQ

本內容是對知名性能評測博主 Anton Putra Kafka vs RabbitMQ Performance 內容的翻譯與整理, 有適當刪減, 相關數據和結論以原作結論為準。 簡介 在本視頻中,我們將首先比較 Apache Kafka 和傳統的 RabbitMQ。然后,在第二輪測試中,會將 Kaf…

打磨和修改:字帖自動生成

功能增加一些。 一個人和大語言模型對話的結果。 不過是重復性勞動,特別需要創意的地方還是不容易做到。