python程序设计OJ平台练习题

目录

001:字符菱形

 002:输出第二个整数

003:求三个数的和

004:字符串交换

005:字符串中的整数求和

006:字符三角形

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

008:反向输出一个三位数

009:判断子串

010:计算2的幂

011:计算多项式的值

012:点和正方形的关系

013:奇偶数判断

014:计算邮资

015:分段函数

016:三角形判断

017:苹果和虫子

018:简单计算器

019:求整数的和与均值

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:找出小于100的整数

049:密码判断

050:找<>中的数

051:电话号码

052:时间处理


001:字符菱形

描述:给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。

输入:输入只有一行,包含一个字符。

输出:该字符构成的菱形。

输入样例1

*

输出样例1

  *
 ***
*****
 ***
  *
char = input()

print(' ' * 2 + char)  
print(' ' + char * 3)
print(char * 5)  
print(' ' + char * 3)
print(' ' * 2 + char)

 002:输出第二个整数

描述:输入三个整数,把第二个输入的整数输出。

输入:输入只有一行,共三个整数,整数之间由一个空格分隔。整数时32为有符号整数。

输出:只有一行,一个整数,即输入的第二个整数。

输入样例1

123 456 789

输出样例1

456

# 读取输入的三个整数
a, b, c = map(int, input().split())

# 输出第二个整数
print(b)

003:求三个数的和

描述:输入三个整数或小数,输出它们的和;如果结果是整数,就保留小数点后面一位的0;请注意:本题应该用float对三个数进行转换

输入:输入三个整数或小数

输出:和

输入样例 1 

1 2.3 4.7

输出样例 1

8.0

num1, num2, num3 = map(float, input().split())

sum = num1 + num2 + num3

if sum.is_integer():
    print(f'{sum:.1f}')
else:
    print(sum)

004:字符串交换

描述:输入两个长度为4的字符串,交换这两个字符串的前两个字符后输出

输入:两个长度为4的字符串

输出:交换这两个字符串的前两个字符后输出

输入样例1

ABCD 
1234

输出样例1

12CD
AB34 
a=input()
b=input()
c=b[:2]+a[2:]
d=a[:2]+b[2:]
print(c)
print(d)

005:字符串中的整数求和

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

输入:一行,两个字符串

输出:两个字符串中整数的和

输入样例 1 

12B 34D

输出样例 1

46
a,b=input().split()
c=int(a[:2])+int(b[:2])
print(c)

006:字符三角形

描述:给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。

输入:输入只有一行,包含一个字符。

输出:该字符构成的等腰三角形,底边长5个字符,高3个字符。

输入样例 1 

*

输出样例 1

  *
 ***
*****
char = input()

print(' ' * 2 + char)
print(' ' + char * 3)  
print(char * 5)

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

描述:给定3个整数a、b、c,计算表达式(a+b)*c的值。

输入:输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。

(-10,000 < a,b,c < 10,000)

输出:输出一行,即表达式的值

输入样例 1 

2 3 5

输出样例 1

25
a,b,c=map(int,input().split())
print((a+b)*c)

008:反向输出一个三位数

描述:将一个三位数反向输出

输入:一个三位数n

输出:反向输出n

输入样例 1 

100

输出样例 1

001
n = input()
a = n[::-1]
print(a)

009:判断子串

描述:输入两行字符串,要求判断第一行 字符串是不是第二行的子串

输入:两行字符串。字符串长度不超过100。

输出:如果第一行是第二行的子串,就输出 "YES",否则输出"NO"

输入样例 1 

hello world
this is hello world, it is ok.

输出样例 1

YES
a=input()
b=input()
if a in b:
    print("YES")
else:
    print("NO")

010:计算2的幂

描述:给定非负整数n,求2^n。

输入:一个整数n。0 <= n < 31。

输出:一个整数,即2的n次方。

输入样例 1 

3

输出样例 1

8
n=int(input())
if 0<=n<31:
    a=2**n
print(a)

011:计算多项式的值

描述:对于多项式f(x) = ax^3+ bx^2+ cx + d 和给定的a, b, c, d, x,计算f(x)的值。

输入:输入仅一行,包含5个实数,分别是x,及参数a、b、c、d的值,每个数都是绝对值不超过100的双精度浮点数。数与数之间以一个空格分开。

输出:输出一个实数,即f(x)的值,保留到小数点后7位。

输入样例 1 

5 1.2 2.2 3.2 4.2

输出样例 1

225.2000000
x, a, b, c, d = map(float, input().split())

result = a*x**3 + b*x**2 + c*x + d

print("{:.7f}".format(result))

012:点和正方形的关系

描述:有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

输入:输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。

输出:输出一行,如果点在正方形内,则输出yes,否则输出no。

输入样例 1 

1 1

输出样例 1

yes
# 输入坐标
x, y = map(int, input().split())

# 判断点是否在正方形内
if -1 <= x <= 1 and -1 <= y <= 1:
    print("yes")
else:
    print("no")

013:奇偶数判断

描述:给定一个整数,判断该数是奇数还是偶数。

输入:输入仅一行,一个大于零的正整数n。

输出:输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。

输入样例 1 

5

输出样例 1

odd
n=int(input())
if n%2==0:
    print("even")
else:
    print("odd")

014:计算邮资

描述:根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

输入:输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

输出:输出一行,包含一个整数,表示邮费。

输入样例 1 

1200 y

输出样例 1

17
# 读取输入的重量和是否加急
weight, express = input().split()
weight = int(weight)

# 初始化基本费和超重费
basic_fee = 8
extra_fee_per_500g = 4

# 计算超重部分费用
if weight <= 1000:
    total_fee = basic_fee
else:
    extra_weight = weight - 1000
    extra_fee = (extra_weight + 499) // 500 * extra_fee_per_500g
    total_fee = basic_fee + extra_fee

# 如果加急,额外收取5元
if express == 'y':
    total_fee += 5

# 输出结果
print(total_fee)

015:分段函数

描述

编写程序,计算下列分段函数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 

1.0

输出样例 1

1.500
N=float(input())
if 0<=N and N<5:
    y=-N+2.5
elif 5<=N and N<10:
    y=2-1.5*(N-3)*(N-3)
elif 10<=N and N<=20:
    y=N/2-1.5
print("{:.3f}".format(y))

016:三角形判断

描述

给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。

输入

输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。

输出

如果能构成三角形,则输出“yes” ,否则输出“no”。

输入样例 1 

3 4 5

输出样例 1

yes
a,b,c=map(int,input().split())
if a+b>c and b+c>a and a+c>b:
    print("yes")
else:
    print("no")

017:苹果和虫子

描述

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

输入

输入仅一行,包括n,x和y(均为整数)。

输出

输出也仅一行,剩下的苹果个数

输入样例 1 

10 4 9

输出样例 1

7

提示

注意:是要求完整的苹果数

n,x,y=map(int,input().split())
if y%x==0:
    a=n-y//x
    print(a)
else:
    a=n-1-y//x
    print(a)

018:简单计算器

描述

一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况(除法结果就是商,忽略余数)

输入

输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

输出

输出只有一行,一个整数,为运算结果。然而:

1. 如果出现除数为0的情况,则输出:Divided by zero!

2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

输入样例 1 

1 2 +

输出样例 1

1 2 +
# 读取输入的三个参数
a, b, operator = input().split()

# 将参数a和b转换为整数
a = int(a)
b = int(b)

# 根据操作符进行相应的运算
if operator == '+':
    result = a + b
elif operator == '-':
    result = a - b
elif operator == '*':
    result = a * b
elif operator == '/':
    if b == 0:
        result = 'Divided by zero!'
    else:
        result = a // b  # 只保留商,忽略余数
else:
    result = 'Invalid operator!'

# 输出结果
print(result)

019:求整数的和与均值

描述

读入n(1 <= n <= 10000)个整数,求它们的和与均值。

输入

输入第一行是一个整数n,表示有n个整数。

第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

输出

输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

输入样例 1 

4
344
222
343
222

输出样例 1

1131 282.75000
n=int(input())
sum=0
for i in range(n):
    sum += int(input())
average=sum/n
print("%d %.5f" %(sum,average))

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

描述

给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

输入

一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。

输出

输出一行,表示序列的最大跨度值。

输入样例 1 

6
3 0 8 7 5 9

输出样例 1

9
n=int(input())
s=input().split()
Max=Min=int(s[0])
for i in range(len(s)):
    Max=max(Max,int(s[i]))
    Min=min(Min,int(s[i]))
m=Max-Min
print(m)

021:奥运奖牌计数

描述

2008年北京

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值