资讯详情 P重点技巧
📅 2026/11/2 11:13:37
常用F5运行当前文件最常用。CtrlS保存文件。CtrlN / CtrlO新建 / 打开文件。Alt3 / Alt4注释 / 取消注释选中代码块。Ctrl[ / Ctrl]减少 / 增加缩进。CtrlZ / CtrlShiftZ撤销 / 重做。编辑与导航CtrlF / CtrlH查找 / 替换。AltG跳转到指定行。**Alt/ **自动补全之前出现过的单词多按几次可循环选择。CtrlSpace触发代码补全提示但与 Windows 输入法切换可能冲突。Tab在 Shell 中自动补全。调试与 ShellCtrlF6重启 Python Shell清空之前的导入记录。#判断成绩等级grade eval(input(请输入成绩))if 0grade100:if 0grade60:print(差)if 60grade70:print(中)if 70grade90:print(良)if 90grade100:print(优)else:print(无效成绩)#输入包裹重量输出对应运费运费保留一位小数weigh float(input(请输入包裹重量(kg)))cost0if weigh10:costweigh*15##if 10weigh5:## costweigh*18##if 5weigh2:## costweigh*20##if 2weigh0:## costweigh*25elif weigh5:costweigh*18elif weigh2:costweigh*20else:costweigh*25#输出这个“f”和“.1f”很重要print(f重量{weigh}kg运费是{cost:.1f}元)#根据输入的半径计算圆面积对无效输入给出错误提示。radiusfloat(input())pi3.1415926if radius 0:areapi*radius**2print(area)else:print(半径必须是正数)#输入10个圆的半径计算所以圆的面积之和sum_of_area0for i in range(10):areapi*radius**2sum_of_area sum_of_area area #累加print(sum_of_area)# 输入三个整数a\b\c按照从大到小降序排列a int(input(a))b int(input(b))c int(input(c))if ab:a,bb,aif bc:b,cc,bif ca:c,aa,cprint(降序结果,a,b,c)#判断输入年份是否是闰年yeareval(input(请输入年份))if year%4000:print(%d年是闰年%year)elif (year%40 and year%100!0):print(%d年是闰年%year)else:print(%d年不是闰年%year)#[例3-11]输入三角形的三条边判断其构成的是等边三角形、等腰三角形或一般三角形。a,b,ceval(input(输入三条边(逗号间隔):))if abc and acb and bca:if abc:print(等边三角形)elif ab or ac or bc:print(等腰三角形)else:print(一般三角形)else:print(不能构成三角形)# range函数 求s12...nnint(input(请输入正整数n))s0i1#while循环while in:ssiii1#for循环#for i in range(1,n1):# ssiprint(s%d\n%(s))# range函数 for循环求100以内不包括100的偶数和sum0for i in range(2,100,2):sum iprint(24...%d%d%(i,sum))#判断正整数是否是素数def isprime(x):if x2:return Falseelse:for i in range(2,x):if x%i0:return Falseelse:return Truefor x in range(100,151):if isprime(x):print(x,end )#水仙花数def narcis(num):a num//100b num//10%10c num%10suma**3b**3c**3if sumint(num):return Trueelse:return Falsefor n in range(100,1000):if narcis(n):print(n,end )#第二种解法##def narcis(a,b,c):## a,b,c int(a), int(b), int(c)## if a**3b**3c**3a*100b*10c:## return True## else:## return False####for n in range(100,1000):## sstr(n)## if narcis(s[0],s[1],s[2]):## print(n,end )# 列表List操作nint(input(请输入班级学生人数))score[]for i in range(n):cjint(input(请输入第str(i1)个学生的成绩)) #” ”里面是(),不是{}score.append(cj)#平均分排序aversum(score)/len(score)#print(平均分{0:.2f}.format(aver))print(f平均成绩{avg:.2f})#高于平均分人数count0for j in range(n):if score[j]aver:countcount1#print(高于平均分人数{0}.format(count))print(f高于平均分人数:{conut:d})#从低到高输出课程分数print(学生分数从低到高如下)score.sort() #默认升序低到高#score.sort(reverseTrue)#降序高到低print(score)# 字典Dictionary操作重点# 输入英文统计26个字母出现的频率(注大写字母按小写字母统计)最后按照字母顺序输出dict1{}textinput(请输入一段英文:)for ch in text: #遍历输入英文if ch.isalpha(): #判断是字母字符则统计chch.lower() #不管字母是大写还是小写统一转小写大写upper()dict1[ch]dict1.get(ch,0)1 #累计修改相关字母键值若字母不存在则新增元素for i in sorted(dict1.keys()): #按照键排序输出#for i in sorted(dict1):同样可以 按照键排序,默认是按照键输出print((i,dict1[i]))# 统计出现频率最高和最低的字符highestmax(dict1.values())lowestmin(dict1.values())result_dic{word:count for word,count in dict1.items() if counthighest or countlowest}print(result_dic)# 输入英文单词统计单词出现的频率(注大写字母按小写字母统计)最后按照单词频率顺序输出dict1{}textinput(请输入一段英文)# 1. 统一小写按空白切分成单词word text.lower().split()# 2. 用字典统计频率for w in word:dict1[w]dict1.get(w,0)1# 3. 按频率从高到低排序# items() 得到 (单词, 次数)keylambda 按次数降序restul_dicsorted(dict1.items(),keylambda x:x[1],reverseTrue)# 4. 输出print(单词频率统计降序)for word,count in restul_dic:print(f{word}:{count})# 单词长度统计text input(请输入英文句子)words text.split() # 按空白切分保留原大小写样例中 This 是大写# 1. 单词长度统计word_len {}for w in words:word_len[w] len(w)print(单词长度统计, word_len)# 2. 长度分组长度 - 单词列表len_group {}for w in words:L len(w)if L in len_group:len_group[L].append(w)else:len_group[L] [w]print(长度分组, len_group)# 3. 最常见长度# 对每个长度统计它对应的单词个数freq {L: len(lst) for L, lst in len_group.items()}max_count max(freq.values())# 找出达到最大次数的长度可能不止一个common [L for L, c in freq.items() if c max_count]# 输出样例只输出一个最常见长度print(f最常见长度{common[0]}出现{max_count}次)#文件使用# 写入文件w 模式# 把一组学生成绩写入 scores.txt每行一个。scores [88,92,76,95]with open(scores.txt,w,encodingutf-8) as f:for s in scores:f.write(str(s) \n)#读取文件并统计逐行迭代#读 scores.txt求平均分、最高分。total 0count 0mx 1with open(scores.txt, r, encodingutf-8) as f:for line in f:sint(line.strip()) # strip() 去掉换行/空格total scount 1if s mx:mx sprint(平均分{0:.2f}.format(total / count))print(最高分,mx)with open(scores.txt, r, encodingutf-8) as f:print(repr(f.read(5))) # 读前 5 个字符如 88\n92with open(scores.txt, r, encodingutf-8) as f:print(repr(f.readline())) # 读一行含 \n如 88\nwith open(scores.txt, r, encodingutf-8) as f:lines f.readlines() # 返回列表 [88\n, 92\n, ...]print(lines)#统计文件行数 / 字符数综合#读文件输出行数与字符总数。line_cnt 0char_cnt 0with open(scores.txt, r, encodingutf-8) as f:for line in f:line_cnt 1char_cnt len(line) # 包含 \nprint(行数, line_cnt, 字符数, char_cnt)#追加写入a 模式#向 scores.txt 追加新成绩不覆盖原内容。new_score[60,100]with open(scores.txt, a, encodingutf-8) as f:for s in new_score:f.write(str(s) \n)#题目读 scores.txt每行一个整数把高于平均分的成绩写入新文件 good.txt并在屏幕输出原文件行数和平均分然后打开 good.txt 用 seek 定位到第二个成绩并输出它。# 1) 读入并统计scores []with open(scores.txt, r, encodingutf-8) as f:for line in f:if line.strip(): # 跳过空行scores.append(int(line.strip()))aver sum(scores) / len(scores)print(行数, len(scores), 平均分{0:.2f}.format(aver))# 2) 写入高于平均分的成绩with open(good.txt, w, encodingutf-8) as f:for s in scores:if s aver:f.write(str(s) \n)# 3) 用 seek 定位读取 good.txt 的第二个成绩with open(good.txt, rb) as f:f.readline() # 跳过第一行pos f.tell() # 记录第二行起点second f.readline().decode(utf-8).strip()print(第二个高于平均分的成绩, second)f.seek(pos) # 定位回第二行起点验证 tell/seekprint(再次读取, f.readline().decode(utf-8).strip())