复制代码请勿使用火狐浏览器,否则可能产生空格!!
7-1 jmu-python-回文数判断(5位数字)
本题目要求输入一个5位自然数n,如果n的各位数字反向排列所得的自然数与n相等,则输出‘yes’,否则输出‘no’。
输入格式:
13531
输出格式:
yes
输入样例1:
13531
输出样例1:
yes
输入样例2:
13530
输出样例2:
no
代码示例
num = input()
if num == num[::-1]:
print('yes')
else:
print('no')
7-2 jmu-python-分段函数&数学函数
本题要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):
输入格式:
直接输入一个实数x
输出格式:
在一行中按“f(x)=result”的格式输出,其中x与result都保留三位小数。
输入样例:
3.14
输出样例:
f(3.140)=0.865
代码示例
import math
x=float(input())
if -1<x<1:
dd=math.sqrt(2-2*x)
elif x>=1:
dd=(math.cos(x)+x**2)/(2.5+abs(x+math.log(100)))
else:
dd=math.e**x
print('f(%.3f)=%.3f'%(x,dd))
7-3 jmu-python-凯撒密码加密算法
编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。
输入格式:
接收两行输入,第一行为待加密的明文,第二行为密钥k。
输出格式:
输出加密后的密文。
输入样例:
在这里给出一组输入。例如:
Hello World!
3
输出样例:
在这里给出相应的输出。例如:
Khoor Zruog!
代码示例
alphabet = 'abcdefghijklmnopqrstuvwxyz'
#获取用户输入的明文和密钥
plaintext = input().strip()
key = int(input())
#将明文中的字母逐个进行加密
ciphertext = ''
for char in plaintext:
if char.isalpha(): # 如果是字母,则进行加密
if char.isupper(): # 如果是大写字母,则将其转换为小写字母进行计算
index = (alphabet.find(char.lower()) + key) % 26
ciphertext += alphabet[index].upper()
else: # 如果是小写字母,则直接进行计算
index = (alphabet.find(char) + key) % 26
ciphertext += alphabet[index]
else: # 如果不是字母,则直接拼接到密文中
ciphertext += char
#输出加密后的密文
print(ciphertext)
7-4 小游戏
有一个小游戏,6个人上台去算手中扑克牌点数之和是否5的倍数,据说是小学生玩的。这里稍微修改一下玩法,n个人上台,算手中数字之和是否同时是5,7,3的倍数。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试先输入1个整数n(1≤n≤15),再输入n个整数,每个都小于1000。
输出格式:
对于每组测试,若n个整数之和同时是5,7,3的倍数则输出“YES”,否则输出“NO”。引号不必输出。
输入样例:
2
3 123 27 60
3 23 27 60
输出样例:
YES
NO
来源:
[1] 黄龙军, 等. 大学生程序设计竞赛入门—C/C++程序设计(微课视频版), 北京:清华大学出版社, 2020.11. ISBN:9787302564744
[2] 黄龙军.程序设计竞赛入门(Python版),北京:清华大学出版社,2021.4. ISBN:9787302571230
代码示例
# 判断一个数是否同时为 5,7,3 的倍数
def is_multiple_of_5_7_3(num):
return num % 5 == 0 and num % 7 == 0 and num % 3 == 0
#处理一组测试数据
def process_test_data(data):
n, *nums = data # 将第一个数作为 n,剩下的数作为 nums
total = sum(nums) # 计算 nums 中所有数的和
if is_multiple_of_5_7_3(total): # 判断是否同时为 5,7,3 的倍数
return "YES"
else:
return "NO"
#处理所有测试数据
def process_all_data():
t = int(input()) # 读入测试数据组数
for i in range(t):
data = list(map(int, input().split())) # 读入一组测试数据
result = process_test_data(data) # 处理该组测试数据
print(result)
#测试代码
process_all_data()
7-5 jmu-python-字符串-统计不同字符个数
对一行字符串统计不同字符个数,分别统计并输出中英文字符、空格、数字和其他字符个数。
输入格式:
一行字符串
输出格式:
依次输出中英文字符、空格、数字、和其他字符个数。
注意:中文数字字符,如七,算作中英文字符,而不算数字字符。
输入样例:
Hi! 天气不错 二十八度 28℃。
输出样例:
10 3 2 3
代码示例
s = input()
ch_en, space, digit, other = 0, 0, 0, 0
for c in s:
if 'A' <= c <= 'Z' or 'a' <= c <= 'z' or '一' <= c <= '\u9fff':
ch_en += 1
elif c == ' ':
space += 1
elif '0' <= c <= '9':
digit += 1
else:
other += 1
print(ch_en, space, digit, other)
7-6 jmu-python-统计成绩
输入一批学生成绩,计算平均成绩,并统计不及格学生人数。
输入格式:
每行输入一个数据,输入数据为负数
结束输入
输出格式:
平均分=XX,不及格人数=XX
,其中XX
表示对应数据。如果没有学生数据,输出没有学生
输入样例:
30
50
70
80
90
20
-1
输出样例:
平均分=56.67,不及格人数=3
代码示例
score_sum = 0 # 学生总成绩
n = 0 # 学生总数
fail = 0 # 不及格学生数
while True:
score = int(input())
if score < 0: # 输入负数结束输入
break
n += 1 # 学生总数+1
score_sum += score # 累计学生总成绩
if score < 60: # 统计不及格学生数
fail += 1
if n > 0:
avg_score = score_sum / n
print(f"平均分={avg_score:.2f},不及格人数={fail}")
else:
print("没有学生")
7-7 jmu-python-素数
输入一个数,判断其是否素数。素数是大于1的自然数中,除了1和它本身以外不再有其他因数。
输入格式:
输入一个整数
输出格式:
输出是否素数。
输入样例:
12
输出样例:
12 is not prime
输入样例:
7
输出样例:
7 is prime
代码示例
num=int(input())
flag=True
for i in range(2,num//2):
if num//i == num/i:
flag=False
if num<=2:
flag=False
if flag:
print('%d is prime'%(num))
else:
print('%d is not prime'%(num))
7-8 判断完数
判断一个正整数是否为完数。完数定义:一个数的所有因子(包括1)之和等于它自身,这个数就是完数。比如6=1+2+3,6是完数。
输入格式:
例如:输入一个正整数 6
输出格式:
输出:
6=1+2+3
输入样例:
在这里给出一组输入。例如:
6
输出样例:
在这里给出相应的输出。例如:
6=1+2+3
输入样例:
在这里给出一组输入。例如:
28
输出样例:
在这里给出相应的输出。例如:
28=1+2+4+7+14
代码示例
n=int(input())
yinzi=1
for i in range(2,n):
if n%i==0:
yinzi+=i
if yinzi == n:
print(str(n)+'=',end='')
for i in range(1,n):
if n%i==0:
if i ==1:
print('1',end='')
else:
print('+'+str(i),end='')
7-9 按格式输出九九乘法表
按照格式设计一个“九九乘法口诀表”,并打印出来。
输入格式:
无输入
输出格式:
注意:每个等式后跟一个空格
输入样例:
无
输出样例:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
代码示例
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'='+str(i*j),end=' ')
print('\n',end='')
7-10 数字金字塔
本题目要求读入一个正整数n(n<10),然后输出n层的数字金字塔。
输入格式:
输入一个正整数n(n<10)。
输出格式:
输出n层的数字金字塔。
输入样例:
在这里给出一组输入。例如:
6
输出样例:
在这里给出相应的输出。例如:
1
222
33333
4444444
555555555
66666666666
代码示例
n=int(input())
for i in range(1,n+1):
print(' '*(n-i),end='')
print(str(i)*(2*i-1))
停留在世界边缘,与之惜别