openjudge-实用Python程序设计测验题目1-54

本文提供了一系列编程挑战,涉及字符图形生成(如菱形、三角形)、数学计算(如求和、多项式计算、奇偶数判断)、字符串操作(如子串判断、字符交换)以及算法应用(如邮资计算、奥运奖牌计数)。这些挑战旨在锻炼和测试读者的编程和逻辑思维能力。

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

 目录

001:字符菱形

002:字符三角形

003:输出第二个整数

004:求三个数的和

005:判断子串

006:计算(a+b)*c的值

007:反向输出一个三位数

008:字符串交换

009:字符串中的整数求和

010:计算2的幂

011:计算多项式的值

012:奇偶数判断

013:点和正方形的关系

014:三角形判断

015:计算邮资

016:分段函数

017:简单计算器

018:大象喝水

019:苹果和虫子2

020:求整数的和与均值

021:整数序列的元素最大跨度值

022:奥运奖牌计数

023:鸡尾酒疗法

024:角谷猜想

025:正常血压

026:数字反转

027:求特殊自然数

028:数字统计

029:求最大公约数问题

030:多少种取法

031:石头剪刀布

032:统计数字字符个数

033:大小写字母互换

034:过滤多余的空格

035:找第一个只出现一次的字符

036:判断字符串是否为回文

037:字符串最大跨距

038:找出全部子串位置

039:万年历

040:成绩排序

041:图像模糊处理

042:向量点积计算

043:病人排队

044:矩阵乘法

045:回文子串

046:校园食宿预订系统

047:找出所有整数

048:找出所有整数和小数

049:找出小于100的整数

050:密码判断

051:寻找h3

052:找<>中的数

053:电话号码

054:时间处理


001:字符菱形

     给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。
样例输入
    *
样例输出
      *
     ***
    *****
     ***
      *

a=input()
print("  "+a)
print(" "+a+a+a)
print(a*5)
print(" "+a+a+a)
print("  "+a)

002:字符三角形

给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
样例输入
    *
样例输出
      *
     ***
    *****
a=input()
print("  "+a)
print(" "+a+a+a)
print(a*5)

003:输出第二个整数

输入三个整数,把第二个输入的整数输出。
样例输入
    123 456 789
样例输出
    456
a=input().split()
print(a[1])

004:求三个数的和

    输入三个整数或小数,输出它们的和
    如果结果是整数,就保留小数点后面一位的0
    请注意:本题应该用float对三个数进行转换
样例输入
    1 2.3 4.7
样例输出
    8.0
s=input().split()
a,b,c=float(s[0]),float(s[1]),float(s[2])
print(a+b+c)

005:判断子串

输入两行字符串,要求判断第一行字符串是不是第二行的子串
输入
    两行字符串。字符串长度不超过100。
输出
    如果第一行是第二行的子串,就输出 "YES",否则输出"NO"
样例输入
    hello world
    this is hello world, it is ok.
样例输出
    YES
a=input()
b=input()
if a in b:
    print("YES")
else:
    print("NO")

006:计算(a+b)*c的值

    给定3个整数a、b、c,计算表达式(a+b)*c的值。
输入
    输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。
    (-10,000 < a,b,c < 10,000)
输出
    输出一行,即表达式的值
样例输入
    2 3 5
样例输出
    25
s=input().split()
a,b,c=int(s[0]),int(s[1]),int(s[2])
print((a+b)*c)

007:反向输出一个三位数

    将一个三位数反向输出。
输入
    一个三位数n。
输出
    反向输出n。
样例输入
    100
样例输出
    001
a=input()
b=a[2]+a[1]+a[0]
print(b)

008:字符串交换

    输入两个长度为4的字符串,交换这两个字符串的前两个字符后输出
样例输入
    ABCD
    1234
样例输出
    12CD
    AB34
s1=input()
s2=input()
print(s2[0]+s2[1]+s1[2]+s1[3])
print(s1[0]+s1[1]+s2[2]+s2[3])

009:字符串中的整数求和

输入两个长度为3的字符串,每个串前两个字符是数字, 后一个字符是字母。 求这两个串中的整数的和
样例输入

    12B 34D
样例输出
    46
s=input().split()
a=int(s[0][0]+s[0][1])
b=int(s[1][0]+s[1][1])
print(a+b)

010:计算2的幂

    给定非负整数n,求2n。
输入
    一个整数n。0 <= n < 31。
输出
    一个整数,即2的n次方。
样例输入
    3
样例输出
    8
n=int(input())
print(2**n)

011:计算多项式的值

    对于多项式f(x) = ax3 + bx2 + cx + d 和给定的a, b, c, d, x,计算f(x)的值。
输入
    输入仅一行,包含5个实数,分别是x,及参数a、b、c、d的值,
    每个数都是绝对值不超过100的双精度浮点数。
数与数之间以一个空格分开。
输出
    输出一个实数,即f(x)的值,保留到小数点后7位。
样例输入
    2.31 1.2 2 2 3
样例输出
    33.0838692
s=input().split()
x,a,b,c,d=float(s[0]),float(s[1]),float(s[2]),float(s[3]),float(s[4])
print("%.7f" % float(a*x**3+b*x**2+c*x+d))

012:奇偶数判断

    给定一个整数,判断该数是奇数还是偶数。
输入
    输入仅一行,一个大于零的正整数n。
输出
    输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。
样例输入
    5
样例输出
    odd
n=int(input())
if n%2:
    print("odd")
else:
    print("even")

013:点和正方形的关系

   有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),
   x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。
输入
    输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。
输出
    输出一行,如果点在正方形内,则输出yes,否则输出no。
样例输入
    1 1
样例输出
    yes
s=input().split()
x,y=int(s[0]),int(s[1])
if -1<=x<=1 and -1<=y<=1:
    print("yes")
else:
    print("no")

014:三角形判断

    给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。
输入
    输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。
输出
    如果能构成三角形,则输出“yes” ,否则输出“no”。
样例输入
    3 4 5
样例输出
    yes
s=input().split()
a,b,c=int(s[0]),int(s[1]),int(s[2])
if a+b>c and a+c>b and b+c>a:
    print("yes")
else:
    print("no")

015:计算邮资

    根据邮件的重量和用户是否选择加急计算邮费。
    计算规则:重量在1000克以内(包括1000克), 基本费8元。
    超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;
    如果用户选择加急,多收5元。
输入
    输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。
    如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出
    输出一行,包含一个整数,表示邮费。
样例输入
    1200 y
样例输出
    17
s=input().split()
a,b=int(s[0]),s[1]
if b=="n":
    if a<=1000:
        print(8)
    elif (a-1000)%500==0:
        print(int(8+int((a-1000)/500)*4))
    else:
        print(int(8+(1+int((a-1000)/500))*4))
elif b=="y":
    if a<=1000:
        print(8+5)
    elif (a-1000)%500==0:
        print(int(8+int((a-1000)/500)*4+5))
    else:
        print(int(8+(1+int((a-1000)/500))*4+5))

016:分段函数

    编写程序,计算下列分段函数y=f(x)的值。
    y=-x+2.5; 0 <= x < 5
    y=2-1.5(x-3)(x-3); 5 <= x < 10
    y=x/2-1.5; 10 <= x < 20
输入
    一个浮点数N,0 <= N < 20
输出
    输出N对应的分段函数值:f(N)。结果保留到小数点后三位。
样例输入
    1.0
样例输出
    1.500
x=float(input())
if 0<=x<5:
    print("%.3f" % (-x+2.5))
elif 5<=x<10:
    print("%.3f" % (2-1.5*(x-3)*(x-3)))
elif 10<=x<20:
    print("%.3f" % (x/2-1.5))

017:简单计算器

    一个最简单的计算器,支持+, -, *, / 四种运算。
    仅需考虑输入输出为整数的情况(除法结果就是商,忽略余数)
输入
    输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
输出
    输出只有一行,一个整数,为运算结果。然而:
    1. 如果出现除数为0的情况,则输出:Divided by zero!
    2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
样例输入
    1 2 +
样例输出
    3
s=input().split()
a,b,c=int(s[0]),int(s[1]),s[2]
if c in ['+','-','*','/']:
    if b==0 and c=='/':
        print("Divided by zero!")
    else:
        print(int(eval(s[0]+s[2]+s[1])))
else:
    print("Invalid operator!")

018:大象喝水

    一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,
    底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。
输入
    输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。
输出
    输出一行,包含一个整数,表示大象至少要喝水的桶数。
样例输入
    23 11
样例输出
    3
提示
    如果一个圆桶的深为h厘米,底面半径为r厘米,那么它最多能装Pi * r * r * h立方厘米的水。
(设Pi=3.14159)
    1升 = 1000毫升
    1毫升 = 1 立方厘米
s=input().split()
h,r=int(s[0]),int(s[1])
n=3.14159*r*r*h
print(int(20/n*1000)+1)

019:苹果和虫子2

    你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。
    虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,
    那么经过y小时你还有多少个完整的苹果?
输入
    输入仅一行,包括n,x和y(均为整数)。
输出
    输出也仅一行,剩下的苹果个数
样例输入
    10 4 9

样例输出
    7
提示
    注意:是要求完整的苹果数。
s=input().split()
n,x,y=int(s[0]),int(s[1]),int(s[2])
if y/x>=n:
    print(0)
elif y%x:
    print(int(n-int(y/x)-1))
else:
    print(int(n-y/x))

020:求整数的和与均值

    读入n(1 <= n <= 10000)个整数,求它们的和与均值。
输入
    输入第一行是一个整数n,表示有n个整数。
    第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。
输出
    输出一行,先输出和,再输出平均值(保留到小数点后5位),
    两个数间用单个空格分隔。
样例输入
    4
    344
    222
    343
    222
样例输出
    1131 282.75000
n=int(input())
s=0
for i in range(n):
    x=int(input())
    s+=x
print(s,"%.5f" % float(s/n))

021:整数序列的元素最大跨度值

    给定一个长度为n的非负整数序列,请计算序列的最大跨度值
    (最大跨度值 = 最大值减去最小值)。
输入
    一共2行,第一行为序列的个数n(1 <= n <= 1000),
    第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。
输出
    输出一行,表示序列的最大跨度值。
样例输入
    6
    3 0 8 7 5 9

样例输出
    9
n=int(input())
s=input().split()
maxi=mini=int(s[0])
for i in s:
    m
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值