二 Python题目练习

题目练习(二)
1.
要求:在不增加或修改任何print语句,且函数内只能增加一条语句的情况下,输出:"eric" 。
1)只能修改f1()函数情况下,完成上述要求
name = 'lzl'def f1():name = 'eric'print(name)def f2():name = 'eric'f1()f2()
2)只能修改f2()函数情况下,完成上述要求
name = 'lzl'def f1():print(name)def f2():global namename = 'eric'f1()f2()
2.验证哥德巴赫猜想:(输入任意大于2的偶数,找出两个素数,其和等于输入的偶数 。若找到输出这两个素数,否则输出找不到)这个问题可分解成两个步骤:1)判断正整数是否为素数,2)任意偶数是否能分解为两个素数之和 。
def isPrime(q):if q <=1 :return Falsefor i in range(2,q//2 + 1):if q % i == 0:return Falsereturn Truedef createPrime(n):result = []for i in range(2,n+1):if isPrime(i):result.append(i)return resultn = 10result = createPrime(n)for i in result:for j in result:if i + j == n:print(i,j)
3.递归、递推、函数 。题目:计算表达式
,x由用户通过键盘输入,要求精确到10-7,即数列和的最后一项的绝对值小于等于10-7为止 。

递归i = -1n = 1def power(n,x):global iprint(i)i += 1if 1/(n ** x) > 1e-7 and i %2 == 0:return power(n+1,x) + 1/(n ** x)elif 1/(n ** x) > 1e-7 and i %2 != 0:return power(n+1, x) - 1/(n ** x)else:return 1/(n ** x)x = int(input('输入x:'))result = power(n,x)print(result)递推def power(n,x):result = 0i = 0while 1/(n ** x) > 1e-7:if i %2 == 0:i+= 1result += 1/(n ** x)else:i+=1result -= 1/(n ** x)n += 1return resultn = 1x = int(input('输入x:'))result = power(n,x)print(result)# Lambdax = int(input('输入x:'))n = 1result = map(lambda n,y=0: y +((-1) ** (n+1)) * (1 / (n ** x)) if float(1/(n ** x)) > 1e-7 else 0, range(1,10000))print(sum(result))
4.题目:输入字符串26个英文字母,围成一圈,以字母a为1,依顺时针方向计数数到5的倍数时,将对应的字母划去,直到所有字母都被划去时为止 。思路:可用列表实现或直接用字符串切片实现
s = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']point =0number = 1while len(s) > 1:if(number % 5 == 0):print(s[point])s.remove(s[point])point -=1number = 0point +=1number +=1if point > len(s) - 1:point = 0print(s[0])
5.杨辉三角形
【二Python题目练习】trangle = []for i in range(1,9):if i == 1:list0 = [1]elif i == 2:list0 = [1,1]else:list0 = [1] * ifor j in range(1,i-1):list0[j] = trangle[-1][j-1] + trangle[-1][j]trangle.append(list0)fori intrangle:print(i)
6.题目:分类统计字符出现的次数(用字典统计)要求:
1)输入一串字符,统计并输出字符串中各字符出现的次数 。
2)分类:字母,空格space,数字digit,其它字符other(用字典输出) 。
# 频数统计s = 'dgfrevgfdkgdsjgringvckghiregkjfdhgierghjkdfng'count_dict = {}for i in s:if inot in count_dict.keys():count_dict[i] = 1else:count_dict[i] += 1print(count_dict.items())# 分类统计s = 'sdfg343dgfd345fg 6sdf4!$ @#$!'count_dict = {'字母': 0, '空格': 0, '数字': 0, '其他字符': 0, }for i in s:if i.isalpha():count_dict['字母'] += 1elif i.isspace():count_dict['空格'] += 1elif i.isdigit():count_dict['数字'] += 1else:count_dict['其他字符'] += 1print(count_dict.items())