云计算工坊:python运维专练4 答案
简单循环
奇数数列求和
描述
输入一个正整数 n,求数列1,3,5,……,(2n-1)的前n项的和。
输入格式
输入一个正整数 n
输出格式
数列的和
代码
n = int(input()) print(sum(range(1,2*n,2))) # 步长为2 #或 #求1+3+5+……+(2n-1)前n项和 n = int(input()) sum = 0 for i in range(1,n + 1): sum = sum + (2 * i - 1) print(sum)
统计学生平均成绩与及格人数
描述
编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
输入格式
在一行中给出n个非负整数,即这n位学生的成绩,其间以空格分隔。
输出格式
按照以下格式输出:
average = 成绩均值 count = 及格人数
代码
score = list(map(int, input().split())) # 通过map()和list()函数把用户输入转化成int列表 average = sum(score) / len(score) # 用总和除以数量得到平均分 count = len(list(x for x in score if x >= 60)) # 通过列表推导式得到大于60分的列表然后用len()函数得到数量 print("average = {}".format(average)) print("count = {}".format(count))
求x的y次幂
描述
在两行中分别输入x和y两个数,输出x的y次方。
输入格式
在两行中分别输入x和y两个数
输出格式
输出x的y次方
代码
a=eval(input()) b=eval(input()) print(pow(a,b))
简单分支
今天是第几天
描述
输入年/月/日(用斜杠分隔),输出该日期是这一年的第几天(题目保证年、月、日都是合法输入)?
输入格式
年/月/日
输出格式
某年某月某日是某年第多少天
代码
year, month, day = map(int, input().split('/')) days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): days[1] = 29 sumDay = sum(days[:month - 1]) + day print('{}年{}月{}日是{}年第{}天'.format(year, month, day, year, sumDay))
身高测算
描述
测算身高,单位为厘米,公式参考下列:
男性身高=(父亲身高+母亲身高)×1.08÷2
女性身高=(父亲身高×0.923+母亲身高)÷2
性别输入"男"或“女”,本题保证所有测试输入身高数据为整型,输出结果取整。如果性别输入不符合要求,则输出“无对应公式”
输入格式
输入三行数据如下:
父亲身高(厘米)
母亲身高(厘米)
性别
输出格式
计算出的身高数据(厘米,取整)
代码
x = int(input()) y = int(input()) g = input() # 判断性别之后使用对应公式计算身高 if g == "男": h = (x + y) * 1.08 / 2 print(int(h)) elif g == "女": h = (x * 0.923 + y) / 2 print(int(h)) else: print("无对应公式")
个税计算器
描述
2018年10月1日以前,个税免征额为3500元/月,调整后,个税免征额为5000元/月,7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数 不超过3,000元 3 0 超过3,000元至12,000元的部分 10 210 超过12,000元至25,000元的部分 20 1,410 超过25,000元至35,000元的部分 25 2,660 超过35,000元至55,000元的部分 30 4,410 超过55,000元至80,000元的部分 35 7,160 超过80,000元的部分 45 15,160 所得税计算公式如下:
应纳税额 = (工资薪金所得 - 五险一金 - 个税免征额) × 适用税率 - 速算扣除数
请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入应发工资小于0或等于0时,输出“error”。
其中:实发工资 = 应发工资 - 五险一金 - 应缴税款
要求使用下面的输入输出语句并补充代码。
salary = float(input()) # salary 应发工资薪金所得 five_one_insurance_fund = float(input()) # five_one_insurance_fund 五险一金 exemption = float(input(')) # exemption 个税免征额
- =======================================================
- 补充你的代码来计算应缴纳税款
输入格式
输入为三行,每一行都是一个浮点数,分别代表应发工资、五险一金、个税起征点。
输出格式
输出为一行,形如:应缴税款490.00元,实发工资11510.00元。
代码
s = float(input()) # 先判断输入是正数,然后根据输入的工资范围定税率和速算扣除数 if s < 0: print("error") else: salary = s - 5000 if salary <= 0: fee, num = 0, 0 elif salary <= 3000: fee, num = 3, 0 elif salary <= 12000: fee, num = 10, 210 elif salary <= 25000: fee, num = 20, 1410 elif salary <= 35000: fee, num = 25, 2660 elif salary <= 55000: fee, num = 30, 4410 elif salary <= 80000: fee, num = 35, 7160 else: fee, num = 45, 15160 tax = abs(salary * fee / 100 - num) print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(tax, salary + 5000 - tax))
字符串
字符串加密
描述
用户在一行中输入一个包括大小写字母和数字的字符串,编程将其中的大写字母用该字母后的第5个字母替代,小写字母用该字母后的第3个字符替代,其他字符原样输出,实现字符串加密。
输入格式
输入一个至少包含一个字母的字符串
输出格式
加密后的字符串
输入输出示例
输入 输出 示例 1 Life is short, you need Python! Qlih lv vkruw, brx qhhg Ubwkrq!
代码
p = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' s = 'FGHIJKLMNOPQRSTUVWXYZABCDEdefghijklmnopqrstuvwxyzabc' #大写字母用后面第5个替换,小写字母用后面第3个替换 plaincode = input() #输入明文 ciphertext = '' #密文 for i in plaincode: n = p.find(i) #返回 i 在 字符串p中的位置序号,找不到时返回-1 if n == -1: ciphertext = ciphertext + i else: ciphertext = ciphertext + s[n] print(ciphertext)
回文判断
描述
一个字符串,如果字符串中各字符逆向排列与原字符串相同,则称为回文,例如“上海自来水来自海上”。用户输入一个字符串,判断该字符串是否为回文,如是回文输出“True”,否则输出“False”。
输入格式
输入一个字符串
输出格式
True 或 False
代码
#一个字符串,如果各字符反向排列与原字符串相同,则称为回文,如“上海自来水来自海上”,用户输入一个字符串,判断该字符串是否为回文。 str = input() if str == str[::-1]: print('True') else: print('False')
星期转换
描述
输入一个表示星期几的数字(1—7),输出对应的“星期一、星期二、星期三、星期四、星期五、星期六、星期日”的中文字符串。
输入格式
输入一个正整数 n(1 <= n <= 7)
输出格式
星期几
代码
n = int(input()) week = '一二三四五六日' print("星期{}".format(week[n-1]))
验证码较验
描述
用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。 请写一个程序完成验证码的匹配验证,假设当前显示的验证码是'Qs2X'。 如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”
输入格式
输入一个字符串
输出格式
根据较验结果输出 “验证码正确” 或 “验证码错误,请重新输入”
代码
#用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。 # 请写一个程序完成验证码的匹配验证,假设当前显示的验证码是Qs2X。 # 如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入” str = input() if str.upper() == 'Qs2X'.upper(): #将用户输入字符串中的字母转为大写,给定字符串中字母转大写,比较二者是否相等 print('验证码正确') else: print('验证码错误,请重新输入')
列表元组
列表的属性与方法
描述
初始化一个空列表,输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),每得到一个输入后,根据输入进行操作。
insert i e: # 在第 i 个位置插入整数 e。 print: # 输出列表 remove e: # 删除第一次出现的整数 e . append e: # 在列表的末尾插入整数 e. sort: # 按默认规则排序. pop: # 弹出列表最后一一个元素 reverse: # 列表元素逆序.
输入
第一行输入一个正整数 n
随后的 n 行,每行输入一个如示例格式的命令(或命令加1或2个整数,要求加入列表的必须是整数)
输出
每遇到“print”时,在新的一行输出列表
输入示例
输入 示例 1 12 insert 0 5 insert 1 10 insert 0 6 print remove 6 append 9 append 1 sort print pop reverse print
代码
def main(n): ls = [] for i in range(n): lsinput = input().split() operate = lsinput[0] if operate == 'insert': ls.insert(int(lsinput[1]),int(lsinput[2])) elif operate == 'remove': ls.remove(int(lsinput[1])) elif operate == 'append': ls.append(int(lsinput[1])) elif operate == 'sort': ls.sort() elif operate == 'pop': ls.pop() # 无参数时,弹出最后一个元素 elif operate == 'reverse': ls.reverse() elif operate == 'print': print(ls) if __name__ == '__main__': N = int(input()) main(N)
求平均成绩
描述
输入用空格分隔的两个正整数n和m,表示后面要接收m个人的n门课的成绩的输入。随后的m行,每行输入用空格分隔的n个成绩。题目保证m和n都在(0-100]之间。请分行输出每门课的平均成绩。
输入
第一行输入用空格分隔的两个正整数n和m
随后的m行,每行输入用空格分隔的n个成绩。
输出
分行输出每门课的平均成绩
代码
# 可用以下一行语句完成 # [print(sum(i) / len(i) ) for i in zip( *[map(float, input().split()) for i in range(int(input().split()[1]))])] n, x = map(int, input().split()) sheet = [] for i in range(x): sheet.append(map(float, input().split()) ) for i in zip(*sheet): print( sum(i)/len(i) )
列表的基本操作
描述
在两行中分别输入一个字符串,分别将其转换为列表 a 和 b,按要求完成以下功能:
1. 输出两个列表的拼接结果 2. 输出列表 a 重复3次的结果 3.输出列表 b 中第3个元素和最后一个元素 4.输出列表 a 中序号1至4之间的元素 5. 输出列表 a 、b的长度,结果用逗号分隔 6. 输出列表 a 的中元素的最小值和 b 中元素的最大值
输入
输入有两行,每行输入一个字符串(a 长度不小于5,b 长度不小于3)
输出
按题目要求进行输出
输入示例
输入 示例 1 abcde 12345
代码
# 在两行中分别输入用逗号分隔的多个数据,分别将其转换为列表a和b,按要求完成以下功能: # 1. 输出两个列表的拼接结果 # 2. 输出列表 a 重复3次的结果 # 3.输出列表 b 中第3个元素和最后一个元素 # 4.输出列表 a 中序号1至4之间的元素 # 5. 输出列表 a 、b的长度,结果用逗号分隔 # 6. 输出列表 a 的中元素的最小值和 b 中元素的最大值 a = list(input()) b = list(input()) print(a + b) print(a * 3) print(b[2],b[-1],sep = ' ') print(a[1:4]) print(len(a),len(b),sep = ',') print(min(a),max(b))
集合
列表去重
描述
输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。
输入
一系列以逗号分隔的英文人名
输出
包含不重复人名的列表,名字出现顺序与输入顺序相同
代码
name_lst = input().split(',') # 输入的字符串节分为列表 name_no_duplicate = list(set(name_lst)) # 去除重复的元素 print(sorted(name_no_duplicate, key=name_lst.index)) # 按名字在原列表中出现的顺序排序
唯一字符
描述
给定一个字符串,找到它的第一个不重复的字符,输出它的索引。如果不存在这种字符或空串,则返回 -1。
本题字符串中只包含小写字母。
输入
python
输出
0
代码
def f(s): k={} if len(s)==0: return -1 for i in s: if i in k: k[i]+=1 else: k[i]=1 p=sorted(k.items(),key=lambda x:x[1]) if p[0][1]==1: return s.index(p[0][0]) else: return -1 s=input() print(f(s))
删除列表中重复元素
描述
用户输入两个正整数 m 和 n ,其中m做为随机数种子。随机产生 n 个0-9之间的整数,以字符形式加入列表。先输出列表,再输出去除重复元素后按升序排序的列表。
输入格式
在两行中分别输入正整数 m 和 n
输出格式
第一行是随机产生的列表
第二行是去除重复元素并排序后的列表
代码
import random m = int(input()) n = int(input()) random.seed(m) ls = [] for i in range(n): ls.append(random.choice('0123456789')) #随机产生n个数字,加入列表 print(ls) #print(set(ls)) #集合无序 print(sorted(set(ls))) #sorted()函数作用是排序后以列表形式输出
字典
数据统计
描述
输入两个整数,在这两个整数组成的闭区间范围内生成100个随机整数,并统计出现数据的次数,出现0次的数字不输出(而不是输出0)。为满足评测需要,程序必须使用seed函数将随机种子设为10,并使用randint函数生成随机数。
输入格式
一行当中输入两个整数,以空格间隔。题目保证两个整数从小到大
输出格式
按照生成随机数从小到大的顺序,每行输出一个生成的整数以及其出现的次数,以空格间隔。
代码
import random dic = {} m,n=map(int,input().split()) random.seed(10) for i in range (100): key = random.randint(m,n) if key in dic: dic[key] += 1 else: dic[key] = 1 for i in sorted(dic.keys()): print('{} {}'.format(i,dic[i]))
列表嵌套字典的排序
描述
第一行输入一个正整数 N,随后的N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {"name":"Tom","age":18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出。
输入格式
第一行输入一个正整数 N
随后的N 行各输入一个形如 “Tom 18” 的字符串
输出格式
根据年龄排序的列表
根据姓名排序的列表
输入输出示例
输入 示例 :
4 Tom 18 Jerry 47 Cat 20 Doge 33
输出示例:
[{'name': 'Tom', 'age': 18}, {'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}] [{'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}, {'name': 'Tom', 'age': 18}]
代码
n = int(input()) ls = [] for i in range(n): x = input().split() ls.append({"name":x[0],"age":int(x[1])}) print(sorted(ls,key=lambda x: x['age'])) print(sorted(ls,key=lambda x: x['name']))
绩点计算
描述
平均绩点计算方法:(课程学分1*绩点+课程学分2*绩点+课程学分n*绩点)/(课程学分1+课程学分2+课程学分n) 用户循环输入五分制成绩和课程学分,输入‘-1’时结束输入,计算学生平均绩点。等级与绩点对应关系如下表:
成绩 等级 绩点 90-100 A 4.0 85-89 A- 3.7 82-84 B+ 3.3 78-81 B 3.0 75-77 B- 2.7 72-74 C+ 2.3 68-71 C 2.0 64-67 C- 1.5 60-63 D 1.3 补考60 D- 1.0 60以下 F 0
输入格式
每组输入包括两行, 第一行是五分制的分数, 第二行是一个代表学分的数字
输出格式
平均绩点,保留两位小数
输入输出示例
输入示例 1
A 3 B 3 A 2 -1
输出:
3.62
代码
''' 成绩 等级 绩点 90-100 A 4.0 85-89 A- 3.7 82-84 B+ 3.3 78-81 B 3.0 75-77 B- 2.7 72-74 C+ 2.3 68-71 C 2.0 64-67 C- 1.5 60-63 D 1.3 补考60 D- 1.0 60以下 F 0 平均绩点:(课程学分1*绩点+课程学分2*绩点+课程学分n*绩点)/(课程学分1+课程学分2+课程学分n) ''' #用户循环输入五分制成绩和课程学分,计算学生平均绩点。 score = {'A':4.0,'A-':3.7,'B+':3.3,'B':3.0,'B-':2.7,'C+':2.3,'C':2.0,'C-':1.5,'D':1.3,'D-':1.0,'F':0.0} gpaSum,creditSum = 0,0 while True: s = input() if s == '-1': break elif s in score.keys(): credit = float(input()) gpaSum = gpaSum + score[s] * credit else: print('data error') creditSum = creditSum +credit gpaAve = gpaSum / creditSum print('{:.2f}'.format(gpaAve))
1.用户输入一个浮点数,用str.format格式化输出,保留3位小数。
2.输入一个整数 n,输出所有小于 n 的非负整数 i 的平方( 0 <= i < n )。3.目前我国个人所得税计算公式如下:应纳个人所得税税额= (工资薪金所得 -五险一金 - 个税免征额)×适用税率-速算扣除数
个税免征额为5000元/月,2018年10月1日起调整后,也就是2018年实行的7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) 税率(%) 速算扣除数
不超过3,000元 3 0
超过3,000元至12,000元的部分 10 210
超过12,000元至25,000元的部分 20 1,410
超过25,000元至35,000元的部分 25 2,660
超过35,000元至55,000元的部分 30 4,410
超过55,000元至80,000元的部分 35 7,160
超过80,000元的部分 45 15,160
请编写一个个税计算器,用户输入为应发工资薪金所得扣除五险一金后的金额
3.输入一个正整数,输出对应的二进制数
4.我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
6.用户输入一个正整数,代表年份,输出该年有多少天?
7用户输入两个正整数 m 和 n ,其中m做为随机数种子。随机产生 n 个0-9之间的整数,以字符形式加入列表。先输出列表,再输出去除重复元素后按升序排序的列表。 。
8.用户在一行中输入一个包括大小写字母和数字的字符串,编程将其中的大写字母用该字母后的第5个字母替代,小写字母用该字母后的第3个字符替代,其他字符原样输出,实现字符串加密。
9.输入一个英文句子,以回车符结束,单词间以空格分隔,标点符号后跟至少一个空格,统计并输出单词的个数(仅统计单词,数字按单词计,不计算标点符号,重复单词出现几次就统计几次)。
10.输入用空格分隔的两个正整数n和m,表示后面要接收m个人的n门课的成绩的输入。随后的m行,每行输入用空格分隔的n个成绩。题目保证m和n都在(0-100]之间。请分行输出每门课的平均成绩。