针对:变量、类型、运算符、表达式、分支结构、循环结构 的练习
ps:练习内容来源于Github:python-100-Day1
- 水仙花数
- 正整数的反转
- 百钱百鸡问题
- 花旗骰游戏
- 斐波那契数列
- 10000以内的完美数
- 100以内的所有素数
1、水仙花数
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,
它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,
例如:1^3 + 5^3+ 3^3=153。 |
for num in range(100,1000):
low = num % 10
mid = num //10% 10
high = num // 100
if num == low**3 +mid**3 + high**3:
print(num)
--------------------------------
153
370
371
407
2、正整数的反转
num = int(input("请输入一个数:"))
reversed_num = 0
while num > 0:
reversed_num = reversed_num*10 + num % 10
num //= 10
print('反转后:',reversed_num)
------------------------------------------
请输入一个数:123456
反转后: 654321
3、百钱百鸡问题
公鸡5元一只,母鸡3元一只,
小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
穷举法;暴力搜索法 |
for x in range(0,20):
for y in range(0,33):
z = 100 - x - y
if 5*x + 3*y + z / 3 == 100:
print('公鸡%d,母鸡%d,小鸡%d '%(x,y,z))
----------------------------------------------------------
公鸡0,母鸡25,小鸡75
公鸡4,母鸡18,小鸡78
公鸡8,母鸡11,小鸡81
公鸡12,母鸡4,小鸡84
4、花旗骰游戏
共有两个骰子玩家第一次摇骰子如果摇出了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:
needs_go_on = True
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
print('玩家摇出了%d点' % current)
if current == 7:
print('庄家胜')
money -= debt
elif current == first:
print('玩家胜')
money += debt
else:
needs_go_on = True
print('你破产了, 游戏结束!')
你的总资产为: 1000
请下注: 1000
玩家摇出了10点
玩家摇出了4点
玩家摇出了3点
玩家摇出了9点
玩家摇出了5点
玩家摇出了5点
玩家摇出了9点
玩家摇出了10点
玩家胜
你的总资产为: 2000
请下注: 1000
玩家摇出了8点
玩家摇出了10点
玩家摇出了2点
玩家摇出了8点
玩家胜
你的总资产为: 3000
请下注: 2000
玩家摇出了6点
玩家摇出了6点
玩家胜
你的总资产为: 5000
请下注: 5000
玩家摇出了7点
玩家胜!
你的总资产为: 10000
请下注: 10000
玩家摇出了5点
玩家摇出了7点
庄家胜
你破产了, 游戏结束!
ps:赌博虽好,不要贪心,见好就收吧!
5、斐波那契数列
斐波那契数列的前20个数斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,
形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。 |
def fibonacci(num):
fibs = [1,1]
for i in range(num-2):
fibs.append(fibs[-2]+fibs[-1])
print(fibs)
fibonacci(20)
----------------------------------------------
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
6、找出10000以内的完美数
找出10000以内的完美数。
完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。 |
for i in range(1,1000):
num = 0
for k in range(1,i):
if i%k == 0:
num += k
if i == num:
print(i)
-----------------------------
6
28
496
7、输出100以内所有的素数
输出100以内所有的素数。
素数指的是只能被1和自身整除的正整数(不包括1)。 |
for i in range(2,100):
flag = 0
for j in range(2,i-1):
if i % j ==0:
flag = 1
break
if flag == 0:
print(i)
--------------------------------------
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