Python程序设计 测验易错题总结
1.温度转换
t=input() if t[-1]=="j": t=int(t[:-1]) t1=t/4.186 print("%.3fcal"%t1) else: t=int(t[0:-3]) t2=t*4.186 print("%.3fcal"%t2)
#这一题不难,但要注意input()里面不要加提示语句,会报错的。
2.快乐的数字
n=input() h=0 i=0 while i<100: for x in n: h+=int(x)**2 print(n) if h==1: print("true") break else: n=str(h) h=0 i+=1 else: print("false")
3.斐波那契数列计算 b
描述:
斐波那契数列如下:
f(0) = 0, f(1) = 1
f(n) = f(n-1) + f(n-2)
编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波那契数列元素
调用上述函数,完成如下功能:
用户输入一个整数n,输出所有不超过n的斐波那契数列元素、输出数列的元素和及平均数,输出按照顺序,用英文逗号和空格分割
此题目为自动评阅,请严格按照要求规范输入和输出。
输入
示例1:5
输出
示例1:
0, 1, 1, 2, 3, 5, 12, 2
n=eval(input()) #输出一个斐波那契数列元素 def fun(n): if n==0: return 0 elif n==1: return 1 else: return fun(n-1)+fun(n-2) i=0 l=[] while i<=n: #输出从0到n的斐波那契数列元素 a=fun(i) l.append(a) print("{}, ".format(a),end="") #0以后的元素前面都有空格 i+=1 sums=sum(l) average=sums//len(l) print("{},{}".format(sums,average)) #总和和平均数前面也有空格
4.站队顺序输出
描述:
有一群人站队,每人通过一对整数(h, k)来描述,其中h表示人的高度,k表示在此人前面队列中身高不小于此人的总人数。
实现一个算法输出这个队列的正确顺序。
输入格式:
输入格式为二维列表,即 list[list[]]形式
外层list包含队列中全部的人,内层list为[h,k]格式,代表个人信息。
输出格式:
输出格式为:list[list[int]]形式
与输入格式一样,需要按照队列顺序排列。
输入输出示例 :
示例 1
输入
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
输出
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
from operator import itemgetter queue = eval(input()) queue.sort(key = itemgetter(1)) queue.sort(key = itemgetter(0), reverse = true) output = [] for item in queue: output.insert(item[1], item) print(output)
5.合法括号组合的生成
描述:
给定括号的个数n,编写程序生成所有格式正确的括号组合。
输入格式 :输入一个整数。
输出格式:输出为一个列表,每个元素是一个字符串,表示一个可能的括号组合。
示例 :
输入:3
输出:['((()))', '(()())', '(())()', '()(())', '()()()']
def brackets(list,s,left,right): if left==0 and right==0: list.append(s) if left>0: #注意这里是if,不是elif brackets(list,s+'(',left-1,right+1) if right>0: #注意这里是if,不是elif brackets(list,s+')',left,right-1) return list left=eval(input()) right=0 list=[] s='' brackets(list,s,left,right) print(list)
6.凯撒密码 b
pwd=input() s="" for x in pwd: count=0 if x in "abcdefghijklmnopqrstuvwxyz": c=(ord(x)+3-64)%26+64 s+=chr(c) count=1 if x in "abcdefghijklmnopqrstuvwxyz": c=(ord(x)+3-97)%26+97 s+=chr(c) count=1 if count==0: s+=x print(s)
7. 3位水仙花数计算 b
for n in range(100,999): a=str(n) s=int(a[0])**3+int(a[1])**3+int(a[2])**3 if n==407: print(n) if s==n and n!=407: print(n,end=",")
8.词频统计之《哈姆雷特》
def gettxt(): txt=open("hamlet.txt","r").read() txt=txt.lower() for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_{|}`~''': txt=txt.replace(ch," ") return txt txt=gettxt() words=txt.split() count={} for word in words: count[word]=count.get(word,0)+1 items=list(count.items()) #二维列表 items.sort(key=lambda x:x[1],reverse=true) for i in range(10): word,count=items[i] print("{:<10},{:>5}".format(word,count))
上一篇: 如何选择服务器操作系统
下一篇: 观察者模式和发布订阅模式(下)