在学习了Python的核心语言元素(变量、类型、运算符、表达式、分支结构、循环结构等)之后,我需要对学习的知识进行巩固和应用,在这里整理一些经典的案例来帮助理解和消化,希望在看完这些练习后,对Python更加了解.

戴口罩、勤洗手、测体温 勤消毒、少聚餐、勤通风 情人节快乐!!!

接下来开始我们的正题

练习

水仙花数

解释:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153。 要求:找出所有水仙花数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
"""
1.水仙花数是3位数,首先确定范围:100~1000
2.以水仙花数的特点为思路
"""

for num in range(100, 1000):
    # 3=153%10===>> % 取余
    one = num % 10
    # 5=153//10%10===>> // 整除
    two = num // 10 % 10
    # 1=153//100
    high = num // 100
    # 判断输出水仙数
    if num == one ** 3 + two ** 3 + high ** 3:
        print(num)

执行结果正确为:[153 370 371 407]

百钱百鸡

解释:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
"""
1.解决这个问题可以采用'穷举法'--将问题的各个部分一次次实验最终找到答案
2.100块钱最多买公鸡20只,最多买母鸡33只
3.一百只鸡减去公鸡数减去母鸡数就是小鸡的数目
"""

for x in range(0, 20):
    for y in range(0, 33):
        z = 100 - x - y
        if x*5 + y*3 + z/3 == 100:
            print("公鸡:[%d] 母鸡:[%d] 小鸡:[%d]" % (x, y, z))

执行结果为: 公鸡:[0] 母鸡:[25] 小鸡:[75] 公鸡:[4] 母鸡:[18] 小鸡:[78] 公鸡:[8] 母鸡:[11] 小鸡:[81] 公鸡:[12] 母鸡:[4] 小鸡:[84]

CRAPS赌博

解释:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from random import randint

# 设置赌注
money = 1000

while money > 0:
    print("您的赌注为: %d" % money)

    # 游戏进行下一局的设置
    game_go = False
    # 赌注>0时游戏循环进行
    while True:
        dz = int(input("请下注: "))
        if 0 < dz <= money:
            break
    # 第一局的点数
    first = randint(1, 6) + randint(1, 6)
    print("第 1 局点数为:[%d]" % first)
    if first == 7 or first == 11:
        print("您赢了!")
        money += dz
    elif first == 2 or first == 3 or first == 12:
        print("庄家赢!")
        money -= dz
    else:
    	# 进行下一局游戏
        game_go = True
        # 局数+1
        times = 2

    while game_go:
        game_go = False
        second = randint(1, 6) + randint(1, 6)
        print("第 %s 局点数为:[%d]" % (times, second))
        if second == 7:
            print("庄家赢!")
            money -= dz
        elif second == first:
            print("您赢了!")
            money += dz
        else:
        	# 下一局
            game_go = True
            times += 1

print("您输光了所有赌注,游戏结束!")

运行结果有兴趣可自行测试. Tips:远离赌博;适度游戏益脑,沉迷游戏伤身;运气游戏,代码测试有可能花费较长时间.

确定一个正整数的所有因子

1
2
3
4
5
6
n = int(input("输入一个正整数: "))
results = []
for i in range(1, n+1):
    if n % i == 0:
        results.append(i)
print(results)

返回结果:[1, 2, 4, 5, 10, 20, 25, 50, 100]

斐波那契数列

解释:数列的初始值为0,接着值为1,从第三个数开始,每个数都是它前面两个数的和,形如:0, 1, 1, 2, 3, 5, 8, 13, …

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
"""
以输出数列前10个数为例
"""
a = 0
b = 1
results = []
for i in range(1, 11):
    results.append(a)
    c = a + b
    a = b
    b = c
print(results)

执行结果为:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Code

练习的代码放在下面链接,如果需要帮助请自行查看。 点击下载