本内容仅供学习交流 !!!
(1)有一分数序列:2/1,3/2,5/3,8/5…,编程输出该序列第20个分数。
a = 1
b = 1
t = 0
for i in range(0, 20): # for循环限制循环次数
t = a # 临时变量t保存a覆盖前的值
a = b
b = a + t
print(b, "/", a) # 格式化打印
(2)编程实现用户登录管理系统。提示用户输入用户名和密码,判断用户名和密码是否正确,要求用户名是admin,密码是123456。如果输入正确,输出登录成功;否则提示重新输入,最多可以尝试3次。
for i in range(0, 3):
account = input("请输入账户")
password = input("请输入密码")
if(account == "admin"): #嵌套循环以实现对账户和密码的分别判断
if(password == "123456"):
print("登录成功")
break
else:
print("密码错误,请重新输入")
else:
print("无该账户,请重新输入")
else:
exit() #三次不满足,退出程序
(3)用多分支选择结构编写程序实现:从键盘输入一个1-7之间的整数,输出对应的英文单词表达的星期几。
a = eval(input("请输入1-7的一个整数"))
if a==1:
print("Monday")
elif a==2:
print("Tuesday")
elif a==3:
print("Wednesday")
elif a==4:
print("Thursday")
elif a==5:
print("Friday")
elif a==6:
print("Saturday")
elif a==7:
print("Sunday")
else:
print("输入错误,请重新输入")
(4)编写程序,输出1-10000之间的完美数,并规定一行输出5个数。【完美数是该数的所有真因子(即除自身的所有因子)的和等于该数本身】
h = 0
for i in range(2,10000+1): #生成 1-10000 的i序列 做被除数
sum = 0
for j in range(1,i): #生成不大于i的j序列 做除数
if(i%j == 0):
sum += j #记录每个因子的总和(需遍历整个j序列再判断)
if(i == sum): #判断 i 和 sum是否相等
h += 1 #判断输出个数
print(i," ",end="")
if(h % 5==0): #满五个换行输出
print()
(5)编程实现对于一元二次方程ax2+bx+c=0,键盘输入a、b、c三个系数,输出方程的实根。【对无实根,有两个相等或不等的实根情况分别考虑】
import math #本题导入math库 用于开放运算
a,b,c = input("请输入 ax2+bx+c=0 三个系数a,b,c 以空格键为分割\n").split()
a = eval(a)
b = eval(b)
c = eval(c)
derta = b*b-4*a*c #计算判别式
if(derta > 0):
x1 = ( -b + math.sqrt(derta) ) / (2 * a)
x2 = ( -b - math.sqrt(derta) ) / (2 * a)
print(f"该方程有两个根分别是 {x1},{x2}")
elif(derta == 0):
x = ( -b + math.sqrt(derta) ) / (2 * a)
print(f"该方程有一个根为 {x}")
else:
print("该方程无解!")
(6)有一个对4位整数的加密方式是:每位数字都加上5,然后用和除以10得到的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,求输入的4位整数加密后的值。
num = int(input("请输入一个四位整数\n"))
if(999<num<10000):
a = num//1000 #num = 1000a + 100b+ 10c + d
b = (num//100)%10
c = (num//10)%10
d = num%10 # 取出每一个位存在abcd中
a = (a + 5) % 10 # 按规则更新abcd
b = (b + 5) % 10
c = (c + 5) % 10
d = (d + 5) % 10
t = a
a = d
d = t
t = b
b = c
c = t
num = 1000*a + 100*b+ 10*c + d
print(num)
else:
print("输入错误,请重新输入")
(7)“百马百担”问题:1匹大马能驮3担货,1批中马能驮2担货,2匹小马能驮1担货,如果用100匹马驮100担货,问有大、中、小马各几匹?
for i in range(1,101): #遍历大马数量
for j in range (1, 101-i): #遍历中马数量
if(3*i + 2*j + (100-i-j)/2 == 100):
print(f"大马数量为{i},中马数量为{j},小马数量为{100-i-j}")
(8)利用循环语句,打印如下图所示的由“*”组成的三角形图案。
# # * * * * * * *
# # * * * * *
# # * * *
# # *
# # * * *
# # * * * * *
# # * * * * * * *
for j in range(7,1-1,-2):
print("{:^{}}".format("* " * j,16 ),)
for j in range(3,7+1,2):
print("{:^{}}".format("* " * j, 16), )
(9)键盘输入一个正整数n,输出效果如“第9题效果图”所示。
# # 1
# # 2 1
# # 3 2 1
# # 4 3 2 1
# # 5 4 3 2 1
# # 6 5 4 3 2 1
num = int(input("请输入有多少行"))
for i in range(1, num+1):
print(" " * (num - i), end='')
for j in range(i, 0 ,-1):
print(f"{j} " ,end='')
print()