Python-100-Days – from Github学习笔记
自己敲代码,进度考察 争取11月底刷完这篇教程
day5 构造程序逻辑
经典例子–
1.寻找水仙花数。
说明:水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:
1
3
+
5
3
+
3
3
=
153
1^3 + 5^3+ 3^3=153
13+53+33=153。
for i in range(100,1000):
a1=i//100
a2=(i%100)//10
a3=(i%100)%10
if a1**3+a2**3+a3**3==i:
print(i)
#输出是 153 370 371 407
2.百钱百鸡问题
for X in range(1,20):
for Y in range(1,34):
if 5*X+3*Y+(100-X-Y)/3==100:
print(X,Y,100-X-Y)
3.CRAPS赌博游戏
说明:CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子获得点数进行游戏。简单的规则是:玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
round=2
x=random.randint(1,6)
y=random.randint(1,6)
print('摇出的点数一共是:',(x+y))
if x+y==7 or x+y==11:
print('玩家赢')
elif x+y==2 or x+y==3 or x+y==11:
print('庄家赢玩家输')
else:
while(round<=15):
print('第%d局开始'%round)
a=random.randint(1,6) #重新赋值
b=random.randint(1,6)
print('摇出的点数一共是:',(a+b))
if a+b==7:
print('第%d局庄家赢玩家输'%round)
break
elif (a+b)==(x+y):
print('第%d局玩家赢'%round)
break
else:
round+=1
很明显文章里的条件更合理
练习–
1.生成斐波那契数列的前20个数。
a=1
b=1
print(a)
print(b)
for i in range(9):
a=a+b
b=b+a
print(a)
print(b)
感觉自己写的太简单了
2.找出10000以内的完美数。
说明:完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。例如:6(
6
=
1
+
2
+
3
6=1+2+3
6=1+2+3)和28(
28
=
1
+
2
+
4
+
7
+
14
28=1+2+4+7+14
28=1+2+4+7+14)就是完美数。
for i in range(2,10000):
sum=0
for j in range(1,i):
if i%j==0:
sum=sum+j
if sum==i:
print(i)
print('end')
答案平方根节约时间,这个循环太久,类似C,引入math函数里的squt解决
3.输出100以内所有的素数。
说明:素数指的是只能被1和自身整除的正整数(不包括1)。
for i in range(2,100):
j=2
sum=1
while(j<i):
if i%j0:
sum+=1
j+=1
if sum1:
print(‘素数:’,i)