表弟来我家里做客,陪表第玩了几天。
第五天是编程练习,构造程序逻辑
第一个: 寻找“水仙花数”。
水仙花数是 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
我们应该先思考,
对于一个数 abc(d) 要是水仙花数的花必须是 a*a*a + b*b*b +c*c*c = d =a*100+b*10+c*1
我们可以得到
if(a == pow(num3,3)+pow(num2,3)+pow(num1,3)):
print("我是水仙花%d"%(a),end="")
接下来就有一个问题,如何得到每一位数
我们通过尝试法:
##print(99%10)
##print(999/10)
##print(999%10)
##print(999%100)
##a = 999%100
##print(a%10)
##print(int(999/100))
##print(int(999/100))
得出
num3 = int(a%10)
b = a%100
num2 = int(b/10)
num1 = int(a/100)
综合起来我们得出解决方案
for a in range(100,1000):
num3 = int(a%10)
b = a%100
num2 = int(b/10)
num1 = int(a/100)
if(a == pow(num3,3)+pow(num2,3)+pow(num1,3)):
print("我是水仙花%d"%(a),end="")
寻找“完美数”。
完美数的定义
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为"完全数"。
那么我们必须要找到一个数的约数,我们可以想出一个方法
要把约数都加起来
如果约数和等于本身则输出我是完美数
if(a%b == 0 ):
c = c+b
if c==a:
print("我是完美数%d"%c)
那么加一个循环,再加一个循环得出解决方法
for a in range(1,1000):
c = 0
for b in range(1,a):
if a % b == 0:
c = c + b
if c == a:
print("我是完美数%d"%c)
break
“百钱百鸡”问题。
for num_cock in range(0,100):
for num_hen in range(0,100):
if 14*num_cock + 8*num_hen -200 == 0 and 100-num_hen-num_cock >= 0:
print('公鸡{0}只,母鸡{1}只,雏鸡{2}
只'.format(num_cock,num_hen,(100-num_cock-num_hen)))
生成“斐波拉切数列”。
列出数列寻找规律
##numi = (a+b) + b + (a+b) + (a+b)+b##3x+2b : 4x 4
##numi = (a+b) + b + (a+b) + (a+b)+b + (a+b)+b+(a+b)##5x+3b : 6x + b 6.5
##numi = (a+b) + b + (a+b) + (a+b)+b + (a+b)+b+(a+b)+ (a+b) + b + (a+b) + b + (a+b) + b ##8x+5b : 10x + b 10.5
并没有发现规律
于是
我希望可以通过定义来解决
numi = numi + numu
于是发现一个严重的问题就是numu = numi 的时候,我们还需要调用一次numu对应的值,所以我们创造一个numu的副本numu_2
每一次可以循环一这个
numu = 1
numi = 1
##循环体
num_2 = numu
numu = numi
numi = numi + num_2
numu = 1
num_2 = numu
numi = 1##x + b 1.5
n = int(input("你需要多少序列"))
for i in range(n):
num_2 = numu
numu = numi
numi = numi + num_2##2x+b 2.6
print(numi)
改进一下
numu = 1
num_2 = numu
numi = 1##x + b 1.5
n = int(input("你需要多少序列"))
for i in range(n):
if n == 1:
print(1)
break
if n == 2:
print(1)
print(1)
break
num_2 = numu
numu = numi
numi = numi + num_2##2x+b 2.6
print(numi
Craps赌博游戏。
直接写,要稍微注意一下,我写的也没多好
from random import randint
who_win = 3
n = 1
while True:
index = randint(2, 12)
if index == 7 or index == 11:
print("玩家胜利")
print("第%d轮%d" % (n, index))
break
elif index == 2 or index == 3 or index == 12:
print("专家胜利")
print("第%d轮%d" % (n, index))
break
else:
print("第%d轮%d"%(n,index))
n = n + 1
index1 = randint(2,12)
if index == 7:
print("庄家胜利")
print("第%d轮%d" % (n, index))
elif index1 == index:
print("玩家胜利")
print("第%d轮%d" % (n, index))
else:
print("第%d轮%d" % (n, index))
n = n + 1