python语⾔程序设计习题
快乐的数字
描述
编写⼀个算法来确定⼀个数字是否“快乐”。 快乐的数字按照如下⽅式确定:从⼀个正整数开始,⽤其每位数的平⽅之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且⼀直等于1,要么将⽆休⽌地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是⼀个快乐的数字,计算过程如下:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
当输⼊时快乐的数字时,输出True,否则输出False。
1def happy(n):
2 if n == 1:
3 print("True")
4 elif n == 4:
5 print("False")
6 else:
7 num = str(n)
8 sum = 0
9 for a in num:
10 sum += int(a) ** 2
11 return happy(sum)
12n = eval(input())
13happy(n)
成绩百分制转换为等级制
描述
利⽤多分⽀选择结构将成绩从百分制变换到五级等级制(A、B、C、D、E),例如,输95,输出A
1grade = eval(input())
2if grade >= 90:
3 print('A')
4elif grade >= 80:
5 print('B')
6elif grade >= 70:
7 print('C')
8elif grade >= 60:
9 print('D')
10else:
11 print('E')
货物托运收费(循环)
描述
托运货物收费是根据货物重量来算的,某托运处的收费标准是:货物重量在50千克(包括)以下的,每千克0.5元,超过50千克部分每千克0.6元,
写⼀程序,输⼊货物重量,输出收费⾦额,每次输完重量后问⼀下,输⼊下⼀个货物的重量吗(y/n,Y/N),回答是y或Y,则继续,否则程序结束。
输⼊格式
第⼀⾏输⼊货物重量,第⼆⾏输⼊Y(y)或者N(n)
输出格式
收费⾦额,中间空格分隔,如下所⽰:
货物重量: 30 收费: 15.0
1def cal(weight):
2 if weight <= 50:
3 money = weight*0.5
4 else:
5 money = 25+(weight-50)*0.6
6 return money
7
8weight = eval(input())
9money = cal(weight)
10print("货物重量: {} 收费: {:.1f}".format(weight,money))
11while True:
12 s = input()
13 if s in ['Y','y']:
14 weight = eval(input())
15 money = cal(weight)
16 print("货物重量: {} 收费: {:.1f}".format(weight,money))
17 else:
18 break
货物托运收费计算
描述
托运货物收费是根据货物重量来算的,某托运处的收费标准是:货物重量在50千克(包括)以下的,每千克0.5元,超过50千克部分每千克0.6元,写⼀程序,输⼊货物重量,输出收费⾦额。
输⼊格式
输⼊货物重量
输出格式
输出收费⾦额
1weight = eval(input())
2if weight <= 50:
3 print(weight*0.5)
4else:
5 print(25+(weight-50)*0.6)
计算100以内偶数的和
描述
请编辑程序输出100以内的偶数之和(包括100)
1count = 0
2for i in range(51):
3 count += 2*i
4 print("第{}个偶数为:{}".format(i+1,2*i))
5print("100以内的偶数和为: {}".format(count))
使⽤numpy⽣成多维数组
根据键盘上输⼊的两个数字m和n,⽣成m⾏n列数据。该⼆维数组的内容是从0开始的偶数。
输⼊⽤逗号分隔的两个整数,如3,4
输出三⾏四列的偶数。如:
1[[ 0 2 4 6]
2 [ 8 10 12 14]
3 [16 18 20 22]]
1import numpy as np
2m,n = eval(input())
3arr = np.arange(0,m*n*2,2).reshape(m,n)
4print(arr)
显⽰CPI
附件中有个cpi.csv⽂件,⾥⾯存储了1990年1⽉到2019年4⽉的数据,格式为:month和cpi。请⽤pands库读⼊这个⽂件,并从键盘上输⼊⼀个⽇期,如:2000.6。
输出为当⽉的cpi值,如:100.5。
如果没有当⽉数据,则输出“No Data”
提⽰:使⽤read_csv()读取⽂件时,若默认模式读⼊的数据类型是错的,⽐如字符串"2019.3"读⼊后变成了数值“2019.30”,请使⽤dtype参数强制按指定类型读⼊数据。
1import pandas as pd
2import numpy as np
3record = pd.read_csv('cpi.csv',dtype=np.str)
writelines()方法将什么写入文件4date = input()
5cn = 0
6for idate in record['month']:
7 if idate == date:
8 cpilocal = record.loc[record['month']==date,'cpi'].values[0]
9 print(cpilocal)
10 cn = 1
11if cn == 0:
12 print('No Data')
发现异常值
附件中有个dirtycpi.csv⽂件,⾥⾯存储了1990年1⽉到2019年4⽉的数据,其格式为:month和cpi。cpi的数据⼀般在2%左右为正常。请⽤pands库读⼊这个⽂件,并从键盘上输⼊><;符号和数字作为判断数据异常的阈值,如:<30,表⽰低于30的cpi数据为异常。>400,表⽰⾼于400的cpi数据为异常。
输出为异常数据信息,如:发现⼤于400的异常数据4条。 输⼊: <30 输出: 发现⼩于30的异常数据7条
提⽰:使⽤read_csv()读取⽂件时,若默认模式读⼊的数据类型是错的,⽐如字符串"2019.3"读⼊后变成了数值“2019.30”,请使⽤dtype参数强制按指定类型读⼊数据。
1import pandas as pd
2import numpy as np
3record = pd.read_csv('dirtycpi.csv',dtype=np.str)
4 a = input()
5con = a[0]
6value = eval(a[1:])
7cn = 0
8if con == '<':
9 for c in record['cpi']:
10 if eval(c) < value:
11 cn += 1
12 print('发现⼩于{}的异常数据{}条'.format(value,cn))
13else:
14 for c in record['cpi']:
15 if eval(c) > value:
16 cn += 1
17 print('发现⼤于{}的异常数据{}条'.format(value,cn))
标题
描述
已知字典:dt = {"姓名":["张唐","李丽"],"学号":["201805160021","201805160022"],"成绩":{"英语":[89,95],"政治":[98,80],"Python 程序设计":[90,95]} }。
要求按照如下格式输出每位同学成绩的平均分(保留⼀位⼩数):
张唐 英语、政治、Python三门课程平均成绩为:
李丽 英语、政治、Python三门课程平均成绩为:
1for a in range(2):
2 ave = (dt['成绩']['英语'][a] + dt['成绩']['政治'][a] + dt['成绩']['Python程序设计'][a])/3
3 print("{} 英语、政治、Python三门课程平均成绩为:{:.1f}".format(dt['姓名'][a],ave))
计算矩形⾯积和周长
描述
从键盘上输⼊矩形的长和宽,求解矩形⾯积和周长。(要求:矩形的长和宽为正数,⾯积结果保留两位⼩数)
输⼊格式
输⼊的数据请使⽤以下⽅式完成,变量名任意,input() 函数中不要添加任何提⽰信息。
第⼀⾏输⼊⼀个数字,代表矩形的长;第⼆⾏输⼊⼀个数字,代表矩形的宽。
输出格式
保留两位⼩数可⽤ {:.2f} 形式。
1length = eval(input())
2width = eval(input())
3 c = 2 *(length + width)
4s = length * width
5print("{:.2f}\n{:.2f}".format(s,c))
列表中偶数位索引元素排序
描述
编写程序,将列表中偶数位索引的元素(包含索引为0的元素)进⾏升序排序,并将排序后的结果放回原列表中。将该过程写成⼀个函数,参数为列表。
1ls = eval(input())
2ls[::2] = sorted(ls[::2])
3print(ls)
求⼤多数元素
1) 接收⼀个列表,出其中数量最多的元素,如果元素数量相同,选择列表中靠前的元素输出。
2)例如,获得输⼊列表[3,2,3],输出3。
3)输⼊代码并提交解答。
1ls = eval(input())
2counts = {}
3for l in ls:
4 counts[l]= (l,0)+1
5items = list(counts.items())
6items.sort(key=lambda x:x[1],reverse=True)
7print(items[0][0])
第K序元素查
1)编写程序,在⽆排序的⼀个列表中查第k个最⼤元素。例如, 给定3,2,1,5,6,4和k=2,输出5。
2)注意:假设k总是有效的,且k值⼤于等于0,⼩于等于数组的长度。
3)输⼊代码并提交解答。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论