python第四次实验(课后)

2018-09-26  本文已影响0人  叛逆闲人

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]==0:
                m+=1
                print("重新选择中奖!")
            else:
                print("重新选择未中奖!")
            z=3
        else:
            z+=1
    print("\n")
rate_1=i/k
rate_2=m/k
print("坚持选择的中奖概率="+str(rate_1))
print("重新选择的中奖概率="+str(rate_2))

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第2个门
关闭一个门:[9, 0, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 1, 0]
随机选择第1个门
关闭一个门:[1, 9, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[1, 0, 1]
随机选择第1个门
关闭一个门:[1, 0, 9]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第2个门
关闭一个门:[9, 1, 0]
坚持选择未中奖!
重新第3个门
重新选择中奖!

关闭前:[1, 1, 0]
随机选择第3个门
关闭一个门:[9, 1, 0]
坚持选择中奖!
重新第2个门
重新选择未中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第3个门
关闭一个门:[0, 9, 1]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第2个门
关闭一个门:[0, 1, 9]
坚持选择未中奖!
重新第1个门
重新选择中奖!

关闭前:[1, 0, 1]
随机选择第3个门
关闭一个门:[9, 0, 1]
坚持选择未中奖!
重新第2个门
重新选择中奖!

关闭前:[0, 1, 1]
随机选择第1个门
关闭一个门:[0, 9, 1]
坚持选择中奖!
重新第3个门
重新选择未中奖!

坚持选择的中奖概率=0.34
重新选择的中奖概率=0.66

第二种方法:

import random
a = ['羊1', '羊2', '汽车']
times = 1000*1000  # 尝试次数
first, change = 0, 0
for i in range(times):
    x = random.choice(a)  # 正确答案
    y = random.choice(a)  # 参赛者选择答案
    if x == y:   # 坚持最初的选择
        first += 1
    else:         # 改变选择
        change += 1
print("坚持初心获得胜利的概率:{:.2f}%".format(first/times*100))
print("改变初心获得胜利的概率:{:.2f}%".format(change/times*100))1234567891011121314

坚持初心获得胜利的概率:33.40%
改变初心获得胜利的概率:66.60%

上一篇下一篇

猜你喜欢

热点阅读