python语言程序设计习题
**例如: 19 就是一个快乐的数字,计算过程如下:**
• 12 + 92 = 82
• 82 + 22 = 68
• 62 + 82 = 100
• 12 + 02 + 02 = 1
当输入时快乐的数字时,输出True,否则输出False。
- def happy(n):
-
if n == 1:
-
print("True")
-
elif n == 4:
-
print("False")
-
else:
-
num = str(n)
-
sum = 0
-
for a in num:
-
sum += int(a) ** 2
-
return happy(sum)
- n = eval(input())
- happy(n)
成绩百分制转换为等级制
描述
利用多分支选择结构将成绩从百分制变换到五级等级制(A、B、C、D、E),例如,输95,输出A
- grade = eval(input())
- if grade >= 90:
-
print('A')
- elif grade >= 80:
-
print('B')
- elif grade >= 70:
-
print('C')
- elif grade >= 60:
-
print('D')
- else:
-
print('E')
货物托运收费(循环)
描述
托运货物收费是根据货物重量来算的,某托运处的收费标准是:货物重量在50千克(包括)以下的,每千克0.5元,超过50千克部分每千克0.6元,
写一程序,输入货物重量,输出收费金额,每次输完重量后问一下,输入下一个货物的重量吗(y/n,Y/N),回答是y或Y,则继续,否则程序结束。
输入格式
第一行输入货物重量,第二行输入Y(y)或者N(n)
输出格式
收费金额,中间空格分隔,如下所示:
货物重量: 30 收费: 15.0
- def cal(weight):
-
if weight <= 50:
-
money = weight*0.5
-
else:
-
money = 25+(weight-50)*0.6
-
return money
- weight = eval(input())
- money = cal(weight)
- print(“货物重量: {} 收费: {:.1f}”.format(weight,money))
- while True:
-
s = input()
-
if s in ['Y','y']:
-
weight = eval(input())
-
money = cal(weight)
-
print("货物重量: {} 收费: {:.1f}".format(weight,money))
-
else:
-
break
货物托运收费计算
描述
托运货物收费是根据货物重量来算的,某托运处的收费标准是:货物重量在50千克(包括)以下的,每千克0.5元,超过50千克部分每千克0.6元,写一程序,输入货物重量,输出收费金额。
输入格式
输出格式
输出收费金额
- weight = eval(input())
- if weight <= 50:
-
print(weight*0.5)
- else:
-
print(25+(weight-50)*0.6)
计算100以内偶数的和
描述
请编辑程序输出100以内的偶数之和(包括100)
- count = 0
- for i in range(51):
-
count += 2*i
-
print("第{}个偶数为:{}".format(i+1,2*i))
- print(“100以内的偶数和为: {}”.format(count))
使用numpy生成多维数组
根据键盘上输入的两个数字m和n,生成m行n列数据。该二维数组的内容是从0开始的偶数。
输入用逗号分隔的两个整数,如3,4
输出三行四列的偶数。如:
- [[ 0 2 4 6]
- [ 8 10 12 14]
- [16 18 20 22]]
- import numpy as np
- m,n = eval(input())
- arr = np.arange(0,mn2,2).reshape(m,n)
- print(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参数强制按指定类型读入数据。
- import pandas as pd
- import numpy as np
- record = pd.read_csv(‘cpi.csv’,dtype=np.str)
- date = input()
- cn = 0
- for idate in record[‘month’]:
-
if idate == date:
-
cpilocal = record.loc[record['month']==date,'cpi'].values[0]
-
print(cpilocal)
-
cn = 1
- if cn == 0:
-
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参数强制按指定类型读入数据。
- import pandas as pd
- import numpy as np
- record = pd.read_csv(‘dirtycpi.csv’,dtype=np.str)
- a = input()
- con = a[0]
- value = eval(a[1:])
- cn = 0
- if con == ‘<’:
-
for c in record['cpi']:
-
if eval(c) < value:
-
cn += 1
-
print('发现小于{}的异常数据{}条'.format(value,cn))
- else:
-
for c in record['cpi']:
-
if eval(c) > value:
-
cn += 1
-
print('发现大于{}的异常数据{}条'.format(value,cn))
标题
描述
已知字典:dt = {“姓名”:[“张唐”,“李丽”],“学号”:[“201805160021”,“201805160022”],“成绩”:{“英语”:[89,95],“政治”:[98,80],“Python程序设计”:[90,95]} }。
要求按照如下格式输出每位同学成绩的平均分(保留一位小数):
张唐 英语、政治、Python三门课程平均成绩为:
李丽 英语、政治、Python三门课程平均成绩为:
- for a in range(2):
-
ave = (dt['成绩']['英语'][a] + dt['成绩']['政治'][a] + dt['成绩']['Python程序设计'][a])/3
-
print("{} 英语、政治、Python三门课程平均成绩为:{:.1f}".format(dt['姓名'][a],ave))
计算矩形面积和周长
描述
从键盘上输入矩形的长和宽,求解矩形面积和周长。(要求:矩形的长和宽为正数,面积结果保留两位小数)
输入格式
输入的数据请使用以下方式完成,变量名任意,input() 函数中不要添加任何提示信息。
第一行输入一个数字,代表矩形的长;第二行输入一个数字,代表矩形的宽。
输出格式
保留两位小数可用 {:.2f} 形式。
- length = eval(input())
- width = eval(input())
- c = 2 *(length + width)
- s = length * width
- print("{:.2f}\n{:.2f}".format(s,c))
列表中偶数位索引元素排序
描述
编写程序,将列表中偶数位索引的元素(包含索引为0的元素)进行升序排序,并将排序后的结果放回原列表中。将该过程写成一个函数,参数为列表。
- ls = eval(input())
- ls[::2] = sorted(ls[::2])
- print(ls)
求大多数元素
1) 接收一个列表,找出其中数量最多的元素,如果元素数量相同,选择列表中靠前的元素输出。
2)例如,获得输入列表[3,2,3],输出3。
3)输入代码并提交解答。
- ls = eval(input())
- counts = {}
- for l in ls:
-
counts[l]= counts.get(l,0)+1
- items = list(counts.items())
- items.sort(key=lambda x:x[1],reverse=True)
- print(items[0][0])
第K序元素查找
1)编写程序,在无排序的一个列表中查找第k个最大元素。例如, 给定3,2,1,5,6,4和k=2,输出5。
2)注意:假设k总是有效的,且k值大于等于0,小于等于数组的长度。
3)输入代码并提交解答。
- ls = set(eval(input()))
- ls = sorted(ls,reverse=True)
- k = int(input())
- print(ls[k-1])
**设计一个计算平方根的小程序
描述
要求从键盘输入一个数字,然后计算其平方根。
- num = input(“请输入一个数字:”)
- num_sqrt = eval(num)**0.5
-
请在此处输入你计算平方根的代码**
- print("{}的平方根为{:.2f}".format(num, num_sqrt))
两数和的目标
1)给定一个整数列表,在列表中,从前向后查找两个元素使其相加之和等于目标数,并返回两个整数在列表中的下标。如果没有符合条件的数字,输出False,本题假设题目的解唯一。
2)注意:分两次input()分别读入整数列表和目标数;输出采用列表形式。例如,依次输入整数列表 [2,7,11,15] 和9,输出[0, 1]。
3)输入代码并提交解答。
- ls = eval(input())
- value = eval(input())
- count = 0
- for i in range(len(ls) - 1):
-
for j in range(i+1,len(ls)):
-
if (ls[i] + ls[j])==value:
-
count = 1
-
print('[{}, {}]'.format(i,j))
-
break
- if count == 0:
-
print('False')
统计随机整数出现的频率
随机生成50个介于[1,20]之间的整数,种子数为10,统计每个整数出现频率,并按照键升序输出整数及其相应的频率。
- import random
- random.seed(10)
- ls = []
- for i in range(50):
-
ls.append(random.randint(1,20))
- counts = {}
- for i in ls:
-
counts[i] = counts.get(i,0) + 1
- items = list(counts.items())
- items.sort(key=lambda x:x[0])
- for i in items:
-
print(i[0],i[1])
列表形式输出字典的键与值
描述
输入字典,将字典 中所有值以列表形式输出,字典中所有键以列表形式输出。
输入格式
{123:“123”, 456:“456”, 789:“789”}
输出格式
[‘123’, ‘456’, ‘789’]
[123, 456, 789]
- dr = eval(input())
- print(list(dr.values()))
- print(list(dr.keys()))
计算菜单消费总额
描述
输入双人下午套餐(包括点心名及相应价格,计算并输出消费总额。
输入格式
{‘卡布奇洛’:32,‘摩卡’:30,‘抹茶蛋糕’:28,‘布朗尼’:26}