数据类型综合练习

1.编写一个程序来反转一个字符串。例如,输入”Hello World”应输出”World Hello”。

str = input("请输入字符串:")
str_list = str.split()
new_str_list = ' '.join(str_list[::-1])
print(new_str_list)

2.编写一个程序,打印数字从1到100,但当数字是3的倍数时,打印”Fizz”代替数字,当数字是5的倍数时,打印”Buzz”。对于同时是3和5的倍数的数字,打印”FizzBuzz”。

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz", end="\t")
    elif i % 5 == 0:
        print("Buzz", end="\t")
    elif i % 3 == 0:
        print("Fizz", end="\t")
    else:
        print(i, end="\t")
    if i % 10 == 0:
        print("")

3.编写一个程序来检查一个字符串是否是另一个字符串的回文。回文是指正读和反读都相同的字符串。

str1 = input("请输入第一个字符串: ")  
str2 = input("请输入第二个字符串: ")  
if str1 == str2[::-1]:  
    print(f"{str1} 是 {str2} 的回文")  
else:  
    print(f"{str1} 不是 {str2} 的回文")

4.编写一个程序来计算两个数的最大公约数(GCD)。

num1 = int(input("请输入第一个数字: "))
num2 = int(input("请输入第二个数字: "))
while num2 != 0: 
    temp = num2
    num2 = num1 % num2
    num1 = temp
print("最大公约数是:", num1)

5.编写一个程序来计算两个数的最小公倍数(LCM)。

num1 = int(input("请输入第一个数:"))
num2 = int(input("请输入第二个数:"))
i = num1 if num1 > num2 else num2
while i < num1 * num2:
    if i % num1 == 0 and i % num2 == 0:
        break
    i += 1
print("最小公倍数是: %d" % i)

6.编写一个程序来检查一个数是否是素数。素数是只有两个正因数:1和它本身

def ss(a):
    if a < 2:
        return 0
    i = 2
    while i < a:
        if a % i == 0:
            return 0
        i += 1
    return 1
        
num = int(input("请输入:"))
if ss(num):
    print("是素数")
else:
    print("不是素数")

7.编写一个程序来生成斐波那契数列。斐波那契数列的前两个数字是0和1,每个后续数字都是前两个数字的和。

num = int(input("请输入生成的个数:"))
a = 0
b = 1
print("%d,%d"% (a, b),end=",")
for i in range(num):
    temp = b
    b = a + b
    a = temp
    print(b,end=",")

8.编写一个程序来对一个整数进行因数分解。因数分解是将一个整数表示为一系列质数的乘积。

num = int(input("请输入一个整数:"))
i = 2
ys = []
while i < num:
    if num % i:
        i += 1
    else:
        num //= i
        ys.append(str(i))
if num > 1:
    ys.append(str(num))
print('*'.join(ys))

9.学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正,防止作弊和恶意打分,计算得分时会先去掉最高分和最低分,再计算平均分。本实例要求编写程序,实现根据需求通过10次输入来计算平均分的功能

fen = []
for i in range(10):
    fen.append(int(input("请输入分数:")))
fen.sort()
fen.pop()
fen.pop(0)
ave = 0
for i in fen:
    ave += i
print("平均分为:", ave / 8)

10.魔方阵又称纵横图,是一种n行n列、由自然数1~n×n组成的方阵,该方阵中的数符合以下规律:

  1. 方阵中的每个元素都不相等。
  2. 每行、每列以及主、副对角线上的个元素之和都相等。 本实例要求编写程序,输出一个5行5列的魔方阵。

提示:可以使用一个循环结构来生成魔方阵,然后使用嵌套的循环结构来逐个填充方阵中的元素。最后,再逐行输出生成的魔方阵。

n = 5
list = [[0 for i in range(n)] for i in range(n)]
sum = n * (n ** 2 + 1) // 2
i = 0
j = n // 2
k = 1
while k <= n * n:
    list[i][j] = k
    k += 1
    
    i1 = i
    j1 = j
    
    i -= 1
    j -= 1
    
    if i < 0:
        i = n - 1
    if j < 0:
        j = n - 1
    
    if list[i][j] != 0:
        i = i1 + 1
        j = j1
for i in range(len(list)):
    for j in range(len(list[i])):
        print(list[i][j], end='\t')
    print()

n = 5 # 这个是定义一下方阵的大小,主要是方便计算
list = [[0 for i in range(n)] for i in range(n)] # 把所有的数据初始化为0,方便判断有没有注释
i = 0 # 初始化那个变量,就是让他在第一排
j = n // 2 # 初始化列变量,让他在中间
# 初始化完成上面两个变量后,意思就是让他在方阵的第一排的中间
k = 1 # 这个是拿来赋值的
while k <= n * n: # 判断k的值有没有超过方阵的最大数值,因为是正方形方阵,5*5就是25,超过25就说明生成完了
    list[i][j] = k # 赋值
    k += 1 #这个不用多说
    
    i1 = i # 这个变量是用来记录上一次赋值的位置,后面会用到
    j1 = j # 同上
    
    i -= 1 # 每次赋值完毕后往左上角移动一格
    j -= 1 # 同上
    
    if i < 0: # 判断i有没有越界,越界了就给他拉回来
        i = n - 1 # 移动到最后一行
    if j < 0: # 判断j有没有越界,越界了就给他拉回来
        j = n - 1 # 移动到最后一列
    
    if list[i][j] != 0: # 如果新位置已经被赋值过了
        i = i1 + 1 # 就在他上一个位置的基础上向下移动一行
        j = j1 #列不变,因为你变的话,原来的位置就已经有值了,在变肯定有值,没意义
for i in range(len(list)): # 打印
    for j in range(len(list[i])):
        print(list[i][j], end='\t')
    print()

温馨提示:本文最后更新于2023-12-01 02:38:51,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容