复制代码请勿使用火狐浏览器,否则可能产生空格!!

 


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为从键盘输入的一个任意实数):

Python实验三

输入格式:

直接输入一个实数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' &lt;= c &lt;= 'Z' or 'a' &lt;= c &lt;= 'z' or '一' &lt;= c &lt;= '\u9fff':

    ch_en += 1

elif c == ' ':

    space += 1

elif '0' &lt;= c &lt;= '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))