python实验4 循环结构
1 import math 2 3 def estimate_pi(n): 4 total = 0 5 ret = 0 6 for i in range(n+1): 7 if i % 2 == 0: 8 sign = 1 9 else: 10 sign = -1 11 term = sign/((2 * i + 1)*math.pow(3,i)) 12 total += term 13 ret = math.sqrt(12) * total 14 return ret 15 16 n = int(input()) 17 p = estimate_pi(n) 18 print(f'pi = {p}')
7-2 百分制成绩转换五分制(循环)
编写一个学生成绩转换程序,用户输入百分制的学生成绩:
90~100时,输出为“A”,
80~89时,输出为“B”,
70~79时,输出为“C”,
60~69时,输出为“D”,
0~59时,输出为“E”。
输入数据超过100时,输出“data error!”。
用户可反复输入成绩进行转换,输入负数时,输出“end”并结束程序。
输入格式:
每次输入一个整数,代表百分制成绩;反复输入,输入负数结束程序
输出格式:
根据每一次的输入值分别输出A、B、C、D、E中的一个字母或"data error!"或"end"。输出end时程序结束。
1 while True: 2 score = int(input()) 3 if score < 0: 4 print('end') 5 break 6 elif score > 100: 7 print('data error!') 8 elif score >= 90: 9 print('A') 10 elif score >= 80: 11 print('B') 12 elif score >= 70: 13 print('C') 14 elif score >= 60: 15 print('D') 16 else: 17 print('E')
7-3 字符串加密
用户在一行中输入一个包括大小写字母和数字的字符串,编程将其中的大写字母用该字母后的第5个字母替代,小写字母用该字母后的第3个字符替代,其他字符原样输出,实现字符串加密。如:A--F,b--e,Z---E,w--z
输入格式:
输入一个至少包含一个字母的字符串
输出格式:
加密后的字符串
def encrypt_string(s): result = '' for c in s: if c.isupper(): result += chr((ord(c) - ord('A') + 5) % 26 + ord('A')) elif c.islower(): result += chr((ord(c) - ord('a') + 3) % 26 + ord('a')) else: result += c return result c = input() n = encrypt_string(c) print(n)
7-4 整钱换零钱
将一张面额50元的钱币换成1元、5元、10元、20元的零钱,要求每种面额的零钱都要有,输出共几种方案,以及每一种方案。
输入格式:
无
输出格式:
输出每一种方案,以及共几种方案。
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
可换得1元5张,5元1张,10元2张,20元1张。
可换得1元5张,5元3张,10元1张,20元1张。
可换得1元10张,5元2张,10元1张,20元1张。
可换得1元15张,5元1张,10元1张,20元1张。
共4种方案。
def change(n):
count = 0
for i in range(1, n + 1): # 1元的数量,最多50个
for j in range(1, (n - i) // 5 + 1): # 5元的数量,最多10个
for k in range(1, (n - i - j * 5) // 10 + 1): # 10元的数量,最多五个
if n - i - j * 5 - k * 10 <= 0: # 如果总额小于等于0,退出循环
break
l = (n - i - j * 5 - k * 10) // 20 # 20元的数量
if n - i - j * 5 - k * 10 - l * 20 == 0: # 如果总额等于50元
count += 1
print(f'可换得1元{i}张,5元{j}张,10元{k}张,20元{l}张。')
print(f'共{count}种方案。')
change(50)
7-5 输出指定位数的最小斐波纳契数
斐波那契数,亦称之为斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……,这个数列从第3项开始,每一项都等于前两项之和。求指定位数的最小斐波那契数。
输入格式:
输人一个整数n(n>1)。
输出格式:
输出斐波纳契数列中,最小的n位数。
def fibonacci(n): if n == 1 or n == 2: return 1 else: return fibonacci(n - 1) + fibonacci(n - 2) n = int(input()) i = 1 while True: if len(str(fibonacci(i))) >= n: print(fibonacci(i)) break i += 1
实验5 组合数据类型
7-1 输入月份数字,输出对应月份名称缩写
输入一个月份数字,输出对应月份名称缩写(英文前三个字母,首字母大写),如果输入的月份非法,输出“error”。
这个字符串可能在你的程序中会用到
"JanFebMarAprMayJunJulAugSepOctNovDec"
输入格式:
输入一个月份数字。
输出格式:
输出对应月份名称缩写(英文前三个字母,首字母大写),如果输入的月份非法,输出“error”。
1 str = "JanFebMarAprMayJunJulAugSepOctNovDec" 2 n = int(input()) 3 pos = (int(n) - 1)*3 4 month = str[pos:pos+3] 5 if int(n)<=12 and int(n)>0: 6 print(month) 7 else: 8 print('error') 9 ''' 10 month = input() 11 month_dict = { 12 '1': 'Jan', 13 '2': 'Feb', 14 '3': 'Mar', 15 '4': 'Apr', 16 '5': 'May', 17 '6': 'Jun', 18 '7': 'Jul', 19 '8': 'Aug', 20 '9': 'Sep', 21 '10': 'Oct', 22 '11': 'Nov', 23 '12': 'Dec' 24 } 25 if month in month_dict: 26 print(month_dict[month]) 27 else: 28 print("error")'''
7-2 比赛评分-元组
编写程序,为新生歌手赛统计评委分数,实现以下功能:在一行内输入多个评委分数,以逗号间隔,去掉一个最高分、一个最低分后,剩下评分的平均值为最后得分,保留1位小数。
输入格式及样例:
在同一行输入多个评委分数,以逗号间隔。
88,89,90,91,86
输出格式及样例:
直接输出最后得分,保留1位小数。
89.0
1 scores = input() 2 scores = scores.split(",") 3 scores = [float(score) for score in scores] 4 scores.sort() 5 scores = scores[1:-1] 6 average_score = sum(scores) / len(scores) 7 print("%.1f" % average_score )
7-3 分析活动投票情况
利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个得票字符串,求第二小队没有得票的队员
输入格式:
在一行中输入得票的队员的序列号,用逗号隔开。
输出格式:
一行中输出第二小队没有得票的队员序号。
1 vote = input() 2 vote_set = set(vote.split(',')) 3 team2_set = {'6', '7', '8', '9', '10'} 4 team1_set = {'1','2','3','4','5'} 5 no_vote_set = team2_set - vote_set 6 no_vote_list = list(no_vote_set) 7 no_vote_list.sort 8 if len(no_vote_list) != 0: 9 print(' '.join(str(x) for x in no_vote_list)) 10 else: 11 print(0)
7-4 计算绩点
学分绩点计算办法:
1、按成绩折算课程绩点:
90分 - 100分 折合4.0 - 5.0绩点,即90分折合4.0,91分折合4.1,依次类推
80分 - 89分 折合3.0 - 3.9绩点,即80分折合3.0,81分折合3.1,依次类推
70分 - 79分 折合2.0 - 2.9绩点,即70分折合2.0,71分折合2.1,依次类推
60分 - 69分 折合1.0 - 1.9绩点,即60分折合1.0,61分折合1.1,依次类推
不足60分的绩点为0
2、计算公式:
课程学分绩点 = 课程绩点 × 课程学分
平均学分绩点 = 课程学分绩点总和 ÷ 课程学分总和
输入学生各门课程的成绩和学分,编程实现学分绩点计算,输出每门课程的绩点,学分和课程学分绩点,并输出平均学分绩点
输入格式:
每一行输入课程的成绩和学分,以#
结束
输出格式:
每一行输出课程绩点,学分,课程学分绩点(保留两位小数),每一项占8个字符的宽度
最后一行输出平均学分绩点(保留两位小数)
输入样例:
在这里给出一组输入。例如:
95 2
87 3
83 2
78 3
66 4
56 2
93 1
#
输出样例:
在这里给出相应的输出。例如:
课程绩点 学分 课程学分绩点
4.5 2 9.00
3.7 3 11.10
3.3 2 6.60
2.8 3 8.40
1.6 4 6.40
0 2 0.00
4.3 1 4.30
平均学分绩点 = 2.69
1 scores = [] 2 credits = [] 3 while True: 4 s = input() 5 if s == '#': 6 break 7 s = s.split() 8 scores.append(int(s[0])) 9 credits.append(int(s[1])) 10 11 score_sum = 0 12 credit_sum = 0 13 for i in range(len(scores)): 14 if scores[i] >= 90: 15 scores[i] = (scores[i] - 90) / 10 + 4 16 elif scores[i] >= 80: 17 scores[i] = (scores[i] - 80) / 10 + 3 18 elif scores[i] >= 70: 19 scores[i] = (scores[i] - 70) / 10 + 2 20 elif scores[i] >= 60: 21 scores[i] = (scores[i] - 60) / 10 + 1 22 else: 23 scores[i] = 0 24 score_sum += scores[i] * credits[i] 25 credit_sum += credits[i] 26 avg = score_sum / credit_sum 27 print('课程绩点 学分 课程学分绩点') 28 for i in range(len(scores)): 29 if scores[i] == 0: 30 print('%-9d%-9d%-8.2f' % (scores[i], credits[i], scores[i] * credits[i])) 31 else: 32 print('%-9.1f%-9d%-8.2f' % (scores[i], credits[i], scores[i] * credits[i])) 33 print('平均学分绩点 = %.2f' % avg)
7-5 计算每个学生的平均成绩
输入所有学生的姓名和成绩,以#
结束。输出每个学生的平均成绩表。
输入格式:
每一行输入一个学生的姓名和成绩,以空格分隔。
输入完成后以#
结束
输出格式:
每行显示一个学生的姓名和平均成绩,姓名占8位宽度,平均成绩保留两位小数点。姓名和平均成绩之间用空格隔开。
输入样例1:
在这里给出一组输入。例如:
Maria 20
David 10
Bob 15
David 20
#
输出样例1:
在这里给出相应的输出。例如:
姓 名 平均成绩 Maria 20.00 David 15.00 Bob 15.00
1 dict1={} 2 dict2={} 3 while 1: 4 s=input() 5 if s=="#": 6 break 7 name,score=s.split() 8 if name in dict1.keys(): 9 dict1[name]+=eval(score) 10 dict2[name]+=1 11 else: 12 dict1[name]=eval(score) 13 dict2[name]=1 14 print("姓 名 平均成绩") 15 for name in dict1.keys(): 16 print("{:8}{:.2f}".format(name,dict1[name]/dict2[name]))
实验6 python
1 def fun(n): 2 if n < 2: 3 y = 3*n+5 4 elif 2 <= x <3: 5 y = 2*sin(n)-1 6 else : 7 y = (1+x**2)**0.5 8 return y
6-2 编写函数判断水仙花数
给定一个三位数n
,要求编写函数isflower(n)
判断n
是否为水仙花数,如果是,则返回True
,否则返回False
。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。
函数接口定义:
在这里描述函数接口。例如:
isflower (n)
其中 n
是传入的参数,表示需要判断的三位数。 n
的值的范围为[100,999]。
裁判测试程序样例:
/* 请在这里填写答案 */
n = eval(input())
if isflower(n)==True:
print('Yes')
else:
print('No')
输入样例:
在这里给出一组输入。例如:
371
输出样例:
在这里给出相应的输出。例如:
Yes
1 def isflower(n): 2 b=int(n%10) 3 c=int((n/10)%10) 4 d=int(n/100) 5 if(b**3+c**3+d**3==n): 6 return True 7 else: 8 return False
6-3 判断回文
完成函数huiwen(s),判断字符串s是否是回文,是回文返回1,不是返回0。在主程序中输入一个字符串,调用该函数判断该字符串是否回文。(回文是顺读逆读都相同的字符串)
函数接口定义:
在这里描述函数接口。
def huiwen(s):
参数s是一个字符串,函数要返回1或者0。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。
/* 请在这里填写答案 */
s=input()
if huiwen(s)==1:print("{}是回文".format(s))
else:print("{}不是回文".format(s))
输入样例:
在这里给出一组输入。例如:
abccba
输出样例:
在这里给出相应的输出。例如:
abccba是回文
1 def huiwen(s): 2 s = s.lower() 3 s = ''.join(s.split(' ')) 4 if s == s[::-1]: 5 return 1 6 else: 7 return 0
6-4 sdut-使用函数求区域内的素数之和
设计函数,求指定范围内的素数之和。
函数1:prime(p), 用户传入参数p
,若它为素数时返回True,否则返回False.
函数2:PrimeSum(m,n),返回区间[m, n]
内所有素数的和(其 中,1<=m<n)。
函数接口定义:
prime(p),返回True表示p是素数,返回False表示p不是素数;
PrimeSum(m,n),函数返回素数之和。
在这里解释接口参数。例如:其中 N
和 D
都是用户传入的参数。 N
的值不超过int
的范围; D
是[0, 9]区间内的个位数。函数须返回 N
中 D
出现的次数。
裁判测试程序样例:
/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
输入样例:
1 10
输出样例:
17
1 def prime(p): 2 if p <= 1: 3 return False 4 for i in range(2, p): 5 if p % i == 0: 6 return False 7 return True 8 9 def PrimeSum(m, n): 10 sum = 0 11 for i in range(m, n+1): 12 if prime(i): 13 sum += i 14 return sum
7-1 闰年函数
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有366天(1月~12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)。
凡阳历中有闰日(2月29日)的年份为闰年。
1582年以来的置闰规则:
规则一:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
规则二:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
可以总结为:四年一闰;百年不闰,四百年再闰。
请编写一个闰年函数可以判断输入的年份(该年份必须大于1582年)是否为闰年。
输入格式:
输入四位数年份xxxx
输出格式:
xxxx年是闰年 或 xxxx年不是闰年
1 def leap_year(year): 2 if year <= 1582: 3 print('年份必须大于1582年') 4 return 5 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: 6 print('%d年是闰年' % year) 7 else: 8 print('%d年不是闰年' % year) 9 10 11 if __name__ == '__main__': 12 year = int(input()) 13 leap_year(year)
7-2 统计函数
编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。
输入格式:
输入一个字符串。
输出格式:
输出元组:(大写字母个数,小写字母个数,数字个数,其他字符个数)
输入样例:
在这里给出一组输入。例如:
1234helll00++++----BBBBB
输出样例:
在这里给出相应的输出。例如:
(5, 5, 6, 8)
1 def count_char(s): 2 upper = 0 3 lower = 0 4 num = 0 5 other = 0 6 for c in s: 7 if c.isupper(): 8 upper += 1 9 elif c.islower(): 10 lower += 1 11 elif c.isdigit(): 12 num += 1 13 else: 14 other += 1 15 return upper, lower, num, other 16 17 if __name__ == '__main__': 18 s = input() 19 result = count_char(s) 20 print(result)
7-3 可变数量参数函数
编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。
输入格式:
本题默认输入参数为(1,2,3,4)。
输出格式:
编写fun_demo(可变数量参数),计算输出:1)以元组形式输出参数;2)输出参数的最大值;3)输出参数累加和。
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
参数为: (1, 2, 3, 4)
参数最大值为: 4
参数累加和为: 10
1 def fun_demo(*nums): 2 print('参数为:', nums) 3 print('参数最大值为:', max(nums)) 4 print('参数累加和为:', sum(nums)) 5 6 fun_demo(1, 2, 3, 4)
标签:绩点,输出,10,python,pta,实验,scores,print,输入
From: https://www.cnblogs.com/jszs0013/p/17399026.html