【Python】第007课:分支和循环结构的应用

目录

 

经典小案例

例子1:寻找水仙花数。

正整数的反转

例子2:百钱百鸡问题。

例子3:CRAPS赌博游戏。

例子4:斐波那契数列。

例子5:打印素数。


 

经典小案例

例子1:寻找水仙花数。

说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:13 + 53 + 33 = 153。

for num in range(100,1000):
	last = num %10
	mid = num//10%10
	high = num//100
	if num == last**3+mid**3+high**3:
		print(num)

		
153
370
371
407

正整数的反转

>>> num = int(input("num="))
num=1234567
>>> reversed_num=0
>>> while num>0:
	reversed_num=reversed_num*10+num%10
	num//=10

	
>>> print(reversed_num)
7654321
>>> 

例子2:百钱百鸡问题。

说明:百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?翻译成现代文是:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

>>> for x in range(0,20):
	for y in range(0,34):
		z = 100-x-y
		if 100==x*5+y*3+z//3 and z%3==0:
			print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')

			
公鸡: 0只, 母鸡: 25只, 小鸡: 75只
公鸡: 4只, 母鸡: 18只, 小鸡: 78只
公鸡: 8只, 母鸡: 11只, 小鸡: 81只
公鸡: 12只, 母鸡: 4只, 小鸡: 84只
>>> 

例子3:CRAPS赌博游戏。

说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简化后的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;玩家如果摇出其他点数则玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数玩家继续摇骰子,直到分出胜负。

from random import randint

money = 1000
while money > 0:
    print(f'你的总资产为: {money}元')
    go_on = False
    # 下注金额必须大于0小于等于玩家总资产
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
    # 第一次摇色子
    # 用1到6均匀分布的随机数模拟摇色子得到的点数
    first = randint(1, 6) + randint(1, 6)
    print(f'\n玩家摇出了{first}点')
    if first == 7 or first == 11:
        print('玩家胜!\n')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜!\n')
        money -= debt
    else:
        go_on = True
    # 第一次摇色子没有分出胜负游戏继续
    while go_on:
        go_on = False
        current = randint(1, 6) + randint(1, 6)
        print(f'玩家摇出了{current}点')
        if current == 7:
            print('庄家胜!\n')
            money -= debt
        elif current == first:
            print('玩家胜!\n')
            money += debt
        else:
            go_on = True
print('你破产了, 游戏结束!')
D:\装机软件\python\python.exe "D:/python code2020/test01/test01.py"
你的总资产为: 1000元
请下注: 500

玩家摇出了8点
玩家摇出了7点
庄家胜!

你的总资产为: 500元
请下注: 300

玩家摇出了10点
玩家摇出了12点
玩家摇出了8点
玩家摇出了4点
玩家摇出了4点
玩家摇出了10点
玩家胜!

你的总资产为: 800元
请下注: 200

玩家摇出了4点
玩家摇出了5点
玩家摇出了10点
玩家摇出了6点
玩家摇出了8点
玩家摇出了7点
庄家胜!

你的总资产为: 600元
请下注: 300

玩家摇出了8点
玩家摇出了11点
玩家摇出了4点
玩家摇出了12点
玩家摇出了5点
玩家摇出了5点
玩家摇出了7点
庄家胜!

你的总资产为: 300元
请下注: 400
请下注: 300

玩家摇出了8点
玩家摇出了9点
玩家摇出了5点
玩家摇出了9点
玩家摇出了6点
玩家摇出了6点
玩家摇出了11点
玩家摇出了9点
玩家摇出了9点
玩家摇出了6点
玩家摇出了7点
庄家胜!

你破产了, 游戏结束!

Process finished with exit code 0

例子4:斐波那契数列。

#输出斐波纳契前20个数
a,b=1,1
print(a,b,end=' ')
for _ in range(18):
    a,b=b,a+b
    print(b,end=' ')

例子5:打印素数。

说明:素数指的是只能被1和自身整除的正整数(不包括1)

for num in range(2,100):
    is_prime=True
    for factor in range(2,num):
        if num%factor == 0:
            is_prime=False
            break
    if is_prime:
        print(num)
D:\装机软件\python\python.exe "D:/python code2020/test01/S素数.py"
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Process finished with exit code 0

 

课程链接:https://github.com/jackfrued/Python-Core-50-Courses/blob/master/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值