python课堂实验四

本文介绍了四个Python编程练习,包括找出所有4位数的四叶玫瑰数(自幂数)、实现用户登录系统、设计猜数游戏以及探讨羊车门问题的数学逻辑。通过实际代码展示了如何解决这些问题,并通过模拟随机事件分析了在羊车门问题中改变选择与坚持初始选择的获胜概率。
摘要由CSDN通过智能技术生成

1、请输出所有的四叶玫瑰数。四叶玫瑰数是 4 位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:当 n 为 3 时, 有 1^3 + 5^3 + 3^3 = 153,153 即是 n 为 3 时的一个自幂数,3 位数的自幂数被称 为水仙花数)。

第一种方法:

i=1000
while i < 10000:
    temp=i
    a=temp//1000#千位
    b=(temp%1000)//100#百位
    c=(temp%100)//10#十位
    d=(temp%10)#个位       
    if i == a**4 + b**4 + c**4 + d**4:
        print("四位数为:", temp)
    i += 1

四位数为: 1634
四位数为: 8208
四位数为: 9474

第二种方法:

for i in range(1000,9999,1):
    sum=0
    temp=i
    while temp:
        sum=sum+(temp%10)**4
        temp=temp//10
    if sum==i:
        print(i)

1634
8208
9474

2、用户登录(三次机会)。给用户三次输入用户名和密码的机会,要求如下: 1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成 功!’,退出程序; 2)当一共有 3 次输入用户名或密码不正确输出“3 次用户名或者密码均有误! 退出程序。”。

for i in range(3):
    name = input("请输入姓名")
    key = input("请输入密码")
    if  name == "Kate" and key == "666666":
        print("登陆成功")
        a=1
    else:
        print("密码错误")
        a=2
if a == 2:
    print("三次密码均有误")

请输入姓名: 张泽中
请输入密码: 查克
密码错误
请输入姓名: 冯小宝
请输入密码: 子若非转
密码错误
请输入姓名: 夏仕鑫
请输入密码: 死神
密码错误
三次密码均有误

请输入姓名: Kate
请输入密码: 666666
登陆成功
请输入姓名:

3、猜数游戏。在程序中预设一个 0-100 之间的整数,让用户通过键盘输入所猜 的数,如果大于预设数,则显示”遗憾,太大了”,小于预设数则显示“遗憾,太 小了”,如此循环,直到猜中该数,显示“猜了 n 次,终于猜对了!”,其中 n 是 用户输入数字的次数,如果用户输入的数不是整数,则输出“输入内容必须为整 数!”的提示,并让用户重新输入。

import random
while True:
    try:
        k = random.randint(0, 100)
        x = int(input("请输入0~100之间的整数"))
        tem = 0
        while x != k:
            tem += 1
            if (x > k):
                print("遗憾,太大了")
            else:
                print("遗憾,太小了")
            x = eval(input("请输入0~100之间的整数"))

    except:
        print("输入内容必须为整数!")
    else:
        print("预测{}次,你猜中了".format(tem))
        break

请输入0~100之间的整数32
遗憾,太小了
请输入0~100之间的整数56
遗憾,太小了
请输入0~100之间的整数34
遗憾,太小了
请输入0~100之间的整数78
遗憾,太小了
请输入0~100之间的整数98
遗憾,太大了
请输入0~100之间的整数87
遗憾,太小了
请输入0~100之间的整数92
遗憾,太小了
请输入0~100之间的整数94
预测7次,你猜中了

4、羊车门问题。有 3 扇关闭的门,一扇门后面停着汽车,其他们后面是山羊, 只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在它开启之前, 主持人会开启另一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。 请问:参赛者更换选择后能否增加猜中汽车的机会?请用 random 库对这个随机 事件进行预测,分别输出参赛者改变选择和坚持选择获胜的机率。 (经典问题)

方法一:

#羊车门问题求解
import random as rd
k=100#选择次数
i=0
m=0
for x in range(k):
    num = [1,1,0]
    rd.shuffle(num)#随机化门
    print("关闭前:"+str(num))
    human = rd.randint(0,2)#选择一个门
    print("随机选择第"+str(human+1)+"个门")
    #关闭一个羊门,赋值为9
    y=0
    while y <3:
        if y !=human and num[y] == 1:
            num[y]=9
            j=y
            y=3
        else:
            y+=1
    print("关闭一个门:"+str(num)) 

    #坚持选择
    if num[human] == 0:#中奖
        i+=1
        print("坚持选择中奖!")
    else:
        print("坚持选择未中奖!")        

    #更换选择
    z=0
    while z <3:
        if z != human and z != j:
            print("重新第"+str(z+1)+"个门")
            if num[z]=&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值