openjudge-实用Python程序设计期末考试

该文介绍了多个编程挑战,包括判断数字好坏、购买手办的费用计算、字符计数、括号内容提取、纸币兑换硬币问题、商品评分排序、物资统计、医院负荷计算、矩阵边缘和、双重tag内整数提取、跳水比赛计分以及打印日历。这些挑战涉及字符串处理、算法设计、数据结构运用和逻辑推理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

001好数坏数

002买手办

003字符计数

004括号内的信息

005纸币兑换硬币

006商品评分

007物资统计

008医院负荷

009矩阵换行求边缘和

010双重tag里的整数

011跳水比赛计分

012藏头诗

013打印任意年份任意月份的日历


001好数坏数

    输入一个正整数,如果是5和7的公倍数,就输出 best,如果不是7的倍数,但是是5的倍数就输出good,其它情况就输出bad。注意这些词都是小写
输入
    一个正整数n
输出
    根据要求输出best,good或bad
样例输入

    样例#1
    35
    样例#2
    14
    样例#3
    10

样例输出

    样例#1
    best
    样例#2
    bad
    样例#3
    good
n = eval(input())
if n % 35 == 0:
    print('best')
elif n % 5 == 0:
    print('good')
else:
    print('bad')

002买手办

    小明到了手办店非常开心,要大买特买。但他不是大富豪,所以只能买不超过60元手办。
    现在知道若干手办的价钱,请计算小明一共要花掉多少钱。
输入
    一行,若干个正整数,每个正整数表示一个手办的价钱
输出
    小明会买下所有不超过60元的手办。输出他将要花掉多少钱
样例输入
    120 60 60 30 50 10 100
样例输出
    210
lst=map(int, input().split())
s=0
for i in lst:
    if i<=60:
        s+=i
print(s)

003字符计数

    一个句子中有多个单词,单词之间可能有一个或多个空格。给定一个字符,请计算该字符在每个单词中的出现次数。 本题目不区分大小写字母。例如,字符A与字符a在单词Abandon中的出现次数都认为是2。 本题目有多组输入数据。
输入
    第一行一个整数n,表示数据组数;
    接下来共2n行,每两行为一组:
    每组中第一行为给定的字符,保证为小写或大写字母;
    每组中第二行为输入的句子,保证只由大小写字母或空格组成,且第一个单词前与最后一个单词后都没有空格。
输出
    n行,每行若干个整数,表示句子的每个单词中,给定字符的出现次数。
    每行的相邻整数之间用一个空格分隔。

    行末多输出了空格没有关系
样例输入
    3
    a
    Abandon that
    B
    Bob  is   the  BIG BOSS
    z
    Zelda   ZZZ

样例输出
    2 1
    2 0 0 1 1
    1 3
n=eval(input())
for i in range(n):
    s=input()
    s=s.lower()
    lst=input().split()
    for word in lst:
        word=word.lower()
        print(word.count(s),end=" ")
    print("")

004括号内的信息

程序填空
对于给定的一行字符串,输出其中每一对小括号里的信息。如果找不到配对的小括号,就输出NONE。
“配对”指的是一个左括号与其右侧最近的右括号的匹配,例如"(a)(b)"里,第一个左括号与第一个右括号配对,第二个左括号与第二个右括号配对。
本题目保证配对的小括号里一定有内容,也就是不会出现"a()b"这样的字符串。
本题目保证配对的小括号不嵌套,也就是不会出现"xy(a(bc)def)z"这样的字符串。
注意,尽管类似"123(ab)cd(ef)gh(ij)k"这样的字符串中也存在"(...(...)...)"的模式,但此时“配对”的小括号没有嵌套,因此是满足题目限制的。
输入
    第一行一个整数n,表示输入字符串行数。
    接下来n行里每行一个不包含空格的字符串s。
输出
    输出共n行,每行若干个字符串,相邻字符串间用一个空格分隔,表示每行输入字符串中各个小括号里的内容。
样例输入
    3
    1;!(#234)5@6(78)9(0)*
    0(a))(()(bcd)12
    )Nothing(

样例输出
    #234 78 0
    a ( bcd
    NONE
提示
    在正则表达式中没有分组时,re.findall返回所有匹配子串构成的列表。
    有且只有一个分组时,re.findall返回的是一个子串的列表,每个元素是一个匹配子串中分组对应的内容。
    在正则表达式中有超过一个分组时,re.findall返回的是一个元组的列表,每个元组对应于一个匹配的子串,元组里的元素,依次是1号分组、2号分组、3号分组......匹配的内容
import re
exit = 10   #此句没用
n = int(input())
#填空内容应为 pt = "XXXX",即写一个正则表达式pt

pt=r"[(](.*?)[)]"

for i in range(n):
    s = input()
    k = re.findall(pt,s)
    if k:
        for x in k:
            print(x, end = " ")
        print("")
    else:
        print("NONE")

005纸币兑换硬币

    用一张面值为x元的纸币换面值为y角、z角的硬币,每种硬币至少一枚,问有几种换法?请注意,纸币的单位是元,硬币的单位是角,一元等于10角。
输入
    输入三个正整数x、y和z
输出
    输出一个正整数,为换法的种数
样例输入
    样例#1
    1 2 5
    样例#2
    2 2 4
    样例#3
    3 4 6
样例输出
    样例#1
    0
    样例#2
    4
    样例#3
    2
提示
    枚举y、z可能枚数的全部组合
s=input().split()
x,y,z=eval(s[0]),eval(s[1]),eval(s[2])
x*=10
count=0
for i in range(1,x//y+1):
    for j in range(1,x//z+1):
        if i*y+j*z==x:
            count+=1
print(count)

006商品评分

    购物网站上有许多商品。每个商品都会得到若干用户评分(为1-10的正整数),取这些评分的平均数作为商品总评分。
给出各个商品的名称及它们对应的若干用户评分,请按照商品总评分从高到低的顺序输出商品名称;如果两个商品总评分相同,则用户评分数量多的商品排在前面。
    题目保证商品名称各不相同,且不会出现两个总评分与用户评分数量完全相同的商品。 本题目有多组输入数据。
输入
    第一行一个整数n,表示数据组数;
    接下来n组数据,每组数据中:
    第一行一个整数m,表示该组数据中商品个数;
    接下来m行,每行由一个字符串s(只含大小写字母)和若干个正整数(至多50个)组成,分别表示商品名称和用户评分。
输出
    对于每组数据,按题目要求的排序结果,每行输出一个商品名称。
样例输入
    2
    3
    Apple 10 8
    Banana 9 9 9
    Peach 10 9
    3
    Apple 10 8
    Banana 9
    Peach 9 8
样例输出
    Peach
    Banana
    Apple
    Apple
    Banana
    Peach
n=eval(input())
for i in range(n):
    m=eval(input())
    result=[]
    for j in range(m):
        lst=input().split()
        name=lst[0]
        rate=lst[1:]
        num=len(lst)-1
        ave=sum(eval(i) for i in rate)/num
        result.append([name,ave,num])
    result.sort(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值