python构造程序逻辑

180 阅读3分钟

构造程序逻辑

前面学了几章之后要巩固一下之前的知识,到现在只是一些python中的冰山一角,这些内容足够来构建一些程序逻辑。

经典例子

1.寻找水仙花数

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

"""
找出所有水仙花数
"""
for num i range(100, 1000):
    bits = num % 10 # 个位
    ten = num // 10 % 10 # 十位
    hunBits = num // 100 # 百位
    if num == bits^3 + ten^3 + hunBits^3:
        print(num)

2.百钱百鸡问题

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

"""
百钱百鸡问题
"""
for x in range(0, 20):
    for y in range(0, 33):
        z = 100 - x - y
        if 5 * x + 5 * y + z / 3 = 100
            print('公鸡%d只,母鸡%d只,小鸡%d只' %(x, y, z))

3.CRAPS游戏

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

"""
CRAPS游戏
设定玩家开始游戏时有1000元
游戏结束条件是玩家输光
"""
from random import randint

money = 1000
while money > 0:
    print('你的总资产为:', money)
    needs_go_on = False
    while True:
        debt = int(input('请下注:'))
        if 0 < debt <= money:
            break
    first = randint(1, 6) + randint(1, 6)
    print('玩家摇出了%d点' % first)
    if first == 7 or first == 11:
        print('玩家胜')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜')
        money -= debt
    else:
        print('玩家继续')
        needs_go_on = True
    while needs_go_on:
        needs_go_on = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)
        if current == first:
            print('玩家胜')
            money += debt
        elif current == 7:
            print('庄家胜')
            money -= debt
        else:
            needs_go_on = True
print('你已经破产,资产为:', money)

4.生成斐波那契数列的前20个数

说明:斐波那契数列(Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。

"""
斐波那契数列前20个数
"""

a = 0
b = 1
for _ in range(20):
    a, b = b, a + b
    print(a, end=' ')