文章目录[隐藏]
5-1 异常处理
从键盘上输入一个整数,输出此数的二倍值。
若输入的值不是整数,则输出:请输入一个整数!
比如输入2,则输出4
若输入abc,则输出:请输入一个整数!
():
n=int(input() )
print(2*n)
():
print("请输入一个整数!")
第一空:try
第二空:except ValueError
5-2 列表排序练习2 - 实验4 装番茄和啤酒的容器
请完成下述程序填空,将fruits列表倒序并输出。注意是倒序,即原有元素顺序颠倒,不是排序。
请在计算机上调试运行,确认执行结果。
fruits = ['grape','pear','apple','water melon']
fruits.()
print("reversed fruits:",fruits)
第一空:reverse()
5-3 计算并输出Peter各科平均分 - 实验12 用函数实现模块化程序设计
请将下述程序补充完整,计算并输出Peter各科平均分。
def key(sName="Peter",()):
sum=0
for i,j in course.items():
print(i,":",j)
for i in ():
sum=sum+i
avg=sum/()
print("{}'s average score is:{:.2f}".format(sName,avg))
key(math=90,english=88,python=95,sports=76)
提示:使用**参数以字典形式吸收关键字参数。
程序期望的执行结果为:
math : 90
english : 88
python : 95
sports : 76
Peter's average score is:87.25
第一空:**course 第二空:course.values()
第三空:len(course)
7-1 约分最简分式
分数可以表示为分子/分母
的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠/
分隔,如:12/34
表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
提示:
- 对于C语言,在
scanf
的格式字符串中加入/
,让scanf
来处理这个斜杠。 - 对于Python语言,用
a,b=map(int, input().split('/'))
这样的代码来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母
的形式表示分数。如5/6
表示6分之5。
输入样例:
66/120
输出样例:
11/20
n,m=input().split("/")
n=int(n)
m=int(m)
for i in range(2,n):
while(n%i==0 and m%i==0):
n=n//i
m=m//i
print(str(n)+"/"+str(m))
7-2 纵横
莫大侠练成纵横剑法,走上了杀怪路,每次仅出一招。这次,他遇到了一个正方形区域,由n×n个格子构成,每个格子(行号、列号都从1开始编号)中有若干个怪。莫大侠施展幻影步,抢占了一个格子,使出绝招“横扫四方”,就把他上、下、左、右四个直线方向区域内的怪都灭了(包括抢占点的怪)。请帮他算算他抢占哪个位置使出绝招“横扫四方”能杀掉最多的怪。如果有多个位置都能杀最多的怪,优先选择按行优先最靠前的位置。例如样例中位置(1,2)、(1,3),(3,2),(3,3)都能杀5个怪,则优先选择位置(1,2)。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。对于每组测试,第一行输入n(3≤n≤20),第二行开始的n行输入n×n个格子中的怪数(非负整数)。
输出格式:
对于每组测试数据输出一行,包含三个整数,分别表示莫大侠抢占点的行号和列号及所杀的最大怪数,数据之间留一个空格。
输入样例:
2
3
1 1 1
0 1 1
1 1 1
3
3 2 1
4 6 5
8 7 9
输出样例:
1 2 5
3 2 32
T = int(input())
for i in range(T):
n=int(input())
a=[[0 for j in range(n+1)]]
for j in range(n):
r=list(map(int,input().split()))
r.insert(0,0)
a.append(r)
maxAns=0
rr=[sum(w)for w in a]
tt=[]
for j in range(n+1):
col=[row[j] for row in a]
tt.append(sum(col))
q,p=0,0
for j in range(1,n+1):
for k in range(1,n+1):
if rr[j]+tt[k]-a[j][k]>maxAns:
maxAns=rr[j]+tt[k]-a[j][k]
p,q=j,k
print(p,q,maxAns)
7-3 节约有理(没写完)
小明准备考研,要买一些书,虽然每个书店都有他想买的所有图书,但不同书店的不同书籍打的折扣可能各不相同,因此价格也可能各不相同。因为资金所限,小明想知道不同书店价格最便宜的图书各有多少本,以便节约资金。
输入格式:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。对于每组测试,第一行先输入2个整数m,n(1≤m,n≤100),表示想要在m个书店买n本书;第二行输入m个店名(长度都不超过20,并且只包含小写字母),店名之间以一个空格分隔;接下来输入m行数据,表示各个书店的售书信息,每行由小数位数不超过2位的n个实数组成,代表对应的第1至第n本书的价格。
输出格式:对于每组测试数据,按要求输出m行,分别代表每个书店的店名和能够提供的最廉价图书的数量,店名和数量之间留一空格。当然,比较必须是在相同的图书之间才可以进行,并列的情况也算。输出要求按最廉价图书的数量cnt从大到小的顺序排列,若cnt相同则按店名的ASCII码升序输出。
输入样例:3 3 3 xiwangshop kehaishop xinhuashop 11.1 22.2 33.3 11.2 22.2 33.2 10.9 22.3 33.1 5 5 xwsd khsd xhsd xxsw hytss 1 2 3 4 5 1.2 2.1 2.7 4.1 4.8 0.8 1.9 3.1 3.8 5.2 0.9 1.95 2.65 3.8 5.1 0.9 1.95 2.65 3.8 5.1 4 5 xwsd khsd xhsd xxsw 1 2 3 4 5 1.2 2.1 2.7 4.1 4.8 0.8 1.9 3.1 3.8 5.2 0.9 1.95 2.65 3.8 5.1
输出样例:xinhuashop 2 kehaishop 1 xiwangshop 1 xhsd 3 hytss 2 xxsw 2 khsd 1 xwsd 0 xhsd 3 xxsw 2 khsd 1 xwsd 0
T = int(input())
for _ in range(T):
m, n = map(int, input().split())
stores = {}
for i in range(m):
store_name = input()
prices = list(map(float, input().split()))
stores[store_name] = prices
cheapest_books = []
for store_name, prices in stores.items():
cheapest_books.append((store_name, min(prices)))
cheapest_books.sort(key=lambda x: (-x[1], x[0]))
for i in range(len(cheapest_books)):
store_name, price = cheapest_books[i]
count = prices.count(price)
print(store_name, count)
7-4 求解字符串数字组合
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数,其中combinations, permutations是用求解组合和排列的函数。 请输入一个有由数字大小写字母组成的字符串 与 一个整数 n,去掉字符串中大小字母仅保留数字的字符串,输出去重后数字符串的n位全组合。
输入格式:
例如:
第一行输入至少含一个数字字符的一串字符串,例如:ABC12DE3De125DE4(去重后数字字符串:12354);
第二行输入一整数n:( 保证n小于等于 去重后数字字符串的长度)。
输出格式:
去重后数字字符串按从大到小的全组合。每种组合占一行,字符间无空格。排列的输出顺序为字典顺序。
输入样例:
在这里给出一组输入。例如:
ABC12DE3De125DE4
3
输出样例:
在这里给出相应的输出。例如:
543
542
541
532
531
521
432
431
421
321
import itertools
strA = input()
n = int(input())
listA = []
for x in strA:
if x.isdigit():
listA.append(x)
listA = sorted(listA, reverse=True)
o = []
for i in itertools.combinations(listA, n):
if len(list(set(i))) == n:
if "".join(i) not in o:
o.append("".join(i))
for i in o:
print(i)
7-5 Python-列表:将一个列表拆分成两个列表并按升序输出
输入一个由若干正整数组成的列表,将其中的奇数和偶函分别存入另外两个列表中,并将这两个列表按升序输出。
输入格式:
输入一个由若干正整数组成的列表。
输出格式:
按升序输出这两个分别由奇数和偶数构成的列表。
输入样例:
[2,5,8,4,3,7,12,20]
输出样例:
[3, 5, 7]
[2, 4, 8, 12, 20]
x = list(eval(input()))
list1=[]
list2=[]
for i in x:
if int(i)%2==0:
list2.append(int(i))
else:
list1.append(int(i))
print(sorted(list1))
print(sorted(list2))
7-6 就业人数统计
键盘输入某班各个同学就业的行业名称,行业名称之间用空格间隔(回车结束输入)。完善 Python 代码,统计各行业就业的学生数量,按数量从高到低方式输出。
输入格式:
输入各个同学就业的行业名称,每个学生之间以空格隔开
输出格式:
行业名称:数量 #所有符号军事半角符号
输入样例:
在这里给出一组输入。例如:
计算机 金融 计算机 建筑 土木 土木
在这里给出相应的输出。例如:
计算机:2
土木:2
金融:1
建筑:1
dataS = input().split()
dicA = {}
for x in dataS:
if x in dicA:
dicA[x] += 1
else:
dicA[x] = 1
for x in sorted(dicA.items(), key=lambda x: x[1], reverse=True):
print(f"{x[0]}:{str(x[1])}")
7-7 python字典-将字典的键和值分别存入两个列表并输出
输入一个字典,将字典的键和值分别存入两个列表并输出。
输入格式:
以字典形式输入,见输入样例。
输出格式:
分行以列表形式输出字典的键和值,见输出样例。
输入样例:
在这里给出一组输入。例如:
{'a':3, 'c': 6, 'd':1, 'e': 10}
输出样例:
在这里给出相应的输出。例如:
['a', 'c', 'd', 'e']
[3, 6, 1, 10]
dic = dict(eval(input()))
keys = []
values = []
for k, v in dic.items():
keys.append(k)
values.append(v)
print(keys)
print(values)