目录

1.输入一个年份,判断是否是闰年

2.求两个数的最大公约数,并输出

 3.是否可以构成三角形

 4.因数之和等于数字本身的数称为完全数,比数字本身大的数称为丰沛数,比数字本身小的数称为不足数。编写程序,输出所有[100,10000)区间的所有完全数、丰沛数和不足数的个数

 5.输出如下形式的九九乘法表。

 6.开发一个循环 5 次计算的小游戏

7.“拍7游戏”

8.列表的处理

 9.判断身份证号码

 10.随机生成50个介于[1,20)之间的整数,随机种子设置为10,统计每个整数出现次数,并按照整数出现次数由高到低输出。


1.输入一个年份,判断是否是闰年

n = input()
while n:
    m = eval(n)
    if m%4==0 and m%100!=0:
        print('True')
    elif m%400==0:
        print('True')
    else:
        print('False')
    n = input()

2.求两个数的最大公约数,并输出

from math import gcd
m = eval(input())
n = eval(input())
print(gcd(m,n))

 3.是否可以构成三角形

编写程序,输入三角形三条边,先判断是否可以构成三角形,如果可以,则进一步求三角形的周长C及面积,否则输出“无法构成三角形!”

例如:

(1)输入:3 4 5,输出:C=12.0,S=6.0

(2)输入:1 2 3,输出:“无法构成三角形”

三条边能构成三角形的条件是:(1)每条边均大于0,(2)任意两条边之和大于第三边

a = eval(input())
b = eval(input())
c = eval(input())
if a>0 and b>0 and c>0 and (a+b>c and a+c>b and b+c>a):
    p = (a+b+c)/2
    C = a+b+c
    S = pow(p*(p-a)*(p-b)*(p-c),0.5)
    print(f"C={C:.1f}")
    print(f"S={S:.1f}")
else:
    print('无法构成三角形')

 4.因数之和等于数字本身的数称为完全数,比数字本身大的数称为丰沛数,比数字本身小的数称为不足数。编写程序,输出所有[100,10000)区间的所有完全数、丰沛数和不足数的个数

def sum_of_divisors(n):
    """
    求一个数的因数和
    """
    divisors_sum = 0
    for i in range(1, n):
        if n % i == 0:
            divisors_sum += i
    return divisors_sum
a = 0
b = 0
c = 0
for i in range(100,10000):
    if sum_of_divisors(i) == i:
        a += 1
    elif sum_of_divisors(i) > i:
        b += 1
    else:
        c += 1
print(f"完全数个数:{a}\n丰沛数个数:{b}\n不足数个数:{c}")

 5.输出如下形式的九九乘法表。

注意:积占2位,乘式之间一个空格

1*9= 9  1*8= 8  1*7= 7  1*6= 6  1*5= 5  1*4= 4  1*3= 3  1*2= 2  1*1= 1

2*9=18 2*8=16 2*7=14 2*6=12 2*5=10 2*4= 8  2*3= 6  2*2= 4

3*9=27 3*8=24 3*7=21 3*6=18 3*5=15 3*4=12 3*3= 9

4*9=36 4*8=32 4*7=28 4*6=24 4*5=20 4*4=16

5*9=45 5*8=40 5*7=35 5*6=30 5*5=25

6*9=54 6*8=48 6*7=42 6*6=36

7*9=63 7*8=56 7*7=49

8*9=72 8*8=64

9*9=81

for i in range(1,10):
    for j in range(9,i-1,-1):
        p=i*j
        print(f"{i}*{j}={p:2d}",end=" " if i!=j else " \n")

 6.开发一个循环 5 次计算的小游戏

设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择“+、-、*”运算符,构成一个表达式,让用户计算式子结果并输入结果,如果计算结果正确则加一分,如果计算结果错误不加分。如果正确率大于等于 80%,则打印“闯关成功”,否则打印“闯关不成功”。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

提示:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

需要用到random库中的seed、randint和choice函数

import random

# 设置随机种子为10
random.seed(10)

# 定义一个变量,用来记录得分
score = 0

# 定义一个循环,从1到5遍历次数
for i in range(1, 6):
  # 随机产生两个 1~10的数字
  a = random.randint(1, 10)
  b = random.randint(1, 10)
  
  # 随机选择“+、-、*”运算符,并根据运算符计算正确答案
  op = random.choice(["+", "-", "*"])
  
  if op == "+":
    ans = a + b
    exp = str(a) + "+" + str(b)
    
  elif op == "-":
    ans = a - b
    exp = str(a) + "-" + str(b)
    
  else:
    ans = a * b
    exp = str(a) + "*" + str(b)
    
  
  # 输出表达式,并提示用户输入结果
  
  # 获取用户输入的结果,并转换为整数类型
  user_ans = int(input(exp + "="))
  
  # 判断用户输入的结果是否与正确答案相等,如果相等则加一分,并输出“回答正确”
  
  if user_ans == ans:
    score += 1
if score >=4:
  print("闯关成功")
else:
  print("闯关不成功")

7.“拍7游戏”

规则是:一堆人围成一圈,开始时,任意指定一人说出数字“1”后,一圈人按顺时针方向,每人按整数由小到大的顺序一人一个地报出后续数字“2”、“3”......,当遇到为“7”的整数倍数字或含“7”的数字时,该念这个数字的人需要拍手一下并喊“跳过”(不能念出这个数字)。应该拍手并喊“跳过”的人,念出了数字,或者该念数字而拍手或喊“跳过”的人为输,接受惩罚后,游戏重新开始。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

书写一个程序,接收用户的一个整数输入,输出从1到这个整数(包含这个整数)间所有应该拍手喊“跳过”的数字。每个数字输出占一行。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

输入使用 input() ,不要附加任何参数和提示信息。

num = eval(input())
print('\n'.join(str(x) for x in range(1,num+1) if x%7==0 or '7' in str(x)))

8.列表的处理

将列表s=[9,7,8,3,2,1,5,6]中的偶数变成它的平方,奇数不变,最后分别输出处理前后的列表。

s = [9,7,8,3,2,1,5,6] 
print(f"处理前的列表为 {s}")
s = [x**2 if x%2==0 else x for x in s]
print(f"处理后的列表为 {s}")

 9.判断身份证号码

中国居民身份证 18 位中,前 17 位数字,最后一位校验码,校验规则如下:前 17 位分别乘以以下系数:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,并相加,结果与 11 求模,余数只可能是 0,1,2,3,4,5,6,7,8,9,10,分别对应:1,0,x,9,8,7,6,5,4,3,2。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

请设计程序,连续输入 18 位身份证号,判断其是否合法,若合法,则输出“*为合法身份证号码”,若非法,则输出“*为非法号码”,若输入位数不对,则输出“输入位数不对,请重新输入”,输入0,则退出。(分值:20)

code = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
dict_ = {'0': 1, '1': 0, '2': 'x', '3': 9, '4': 8,
         '5': 7, '6': 6, '7': 5, '8': 4, '9': 3, '10': 2}
num = input()
while ( num != '0'):
    if len(num) != 18:
        print("输入位数不对,请重新输入")
        break
    code_next = [int(x)*int(y) for x, y in zip(code, num)]
    sum_ = sum(code_next) % 11
    if (dict_[str(sum_)] != int(num[-1])):
        print(f"{int(num)} 为非法号码")
    else:
        print(f"{int(num)} 为合法身份证号码")
    # print(code_next)
    num = input()

 10.随机生成50个介于[1,20)之间的整数,随机种子设置为10,统计每个整数出现次数,并按照整数出现次数由高到低输出。

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬输出格式示例:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

15出现了5次
2出现了4次
14出现了4次
16出现了4次‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

...

import random
s = {}
random.seed(10) # 设置随机数
for i in range(50):
    num = random.randint(1,19)
    if s.get(str(num),-1)!=-1: # 判断键值对是否存在,若存在则值+1
        s[str(num)] = s[str(num)]+1
    else: # 不存在则将键值对加入到字典中,初始值设为1
        s[str(num)] = 1
s = dict(sorted(s.items(),key=lambda x:x[1],reverse=True)) # 根据字典键值对的值进行排序,逆序,将返回的序列再转回字典
for x in s.keys():
    print(f"{int(x)}出现了{s[x]}次") # 输出字典的内容

 略略略......