一些关于python的练习题

本文展示了编程中的基础实践,包括分数序列的计算、用户登录验证、多分支逻辑、一元二次方程求解、数字加密、解决数学问题(如百马百担)以及循环结构在绘制图形中的应用。
摘要由CSDN通过智能技术生成
本内容仅供学习交流 !!!

(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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值