在学习了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
练习的代码放在下面链接,如果需要帮助请自行查看。
点击下载