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组成的方阵,该方阵中的数符合以下规律:
- 方阵中的每个元素都不相等。
- 每行、每列以及主、副对角线上的个元素之和都相等。 本实例要求编写程序,输出一个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()
© 版权声明
THE END
暂无评论内容