Python第16周PTA练习题
本文最后更新于 188 天前,其中的信息可能已经有所发展或是发生改变。

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)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇