Python-100-Days学習記録5日目
6000 ワード
Python-100-Days学習記録
元のプロジェクトのアドレス:https://github.com/jackfrued/Python-100-Days
Day5
練習する「水仙の花の数」 を探しています
水仙花数(Narcissistic number)は超完全数字不変量(pluperfect digital invariant,PPDI)、ナルシスト数、自べき乗数、アムス壮数またはアムストロング数(Armstrong number)とも呼ばれ、水仙花数は1つの3桁を指し、その各桁の数字の3乗の和はそれ自体に等しい(例えば:1^3+5^3+3+3^3=153).
実行結果:
1回変更:
実行結果:「完璧な数」 を探しています
それぞれがその約数(真約数、ある数の約数をリストし、その数自体を除いて、残りはその真約数)以下のものと、それ自体に等しい自然数を完全数(Perfect number)と呼び、完璧数または完備数とも呼ばれる.
実行結果:
1回変更:「百元百鶏」問題 わが国の古代数学者の張丘建が『算経』という本の中で提出した数学問題:鶏翁は1価5、鶏母は1価3、鶏雛は3価1.百元で百鶏を買って、鶏翁、鶏母、鶏雛の各幾何学を聞きますか?
実行結果:
1回変更:フィボナッチ数列 を生成する
フィボナッチ数列は、黄金分割数列、レオナルド・フィボナッチがウサギの繁殖を例に導入したことから「ウサギ数列」とも呼ばれ、1、1、2、3、5、8、13、21、34、・・・数学的には、フィボナッチ数列は、F(1)=1、F(2)=1、F(n)=F(n-1)+F(n-2)(n>=3、n∈N*)
実行結果:
1回変更:
関数を使用しないと速度が大幅に向上します. craps賭博ゲーム ルール:プレイヤーはサイコロを2つ投げ、各サイコロの点数は1-6で、最初の点数と7または11であれば、プレイヤーは勝つ.ポイント和が2、3または12の場合、プレイヤーは荘家に負けて勝つ.和が他の点数であれば、1回目の点数とを記録し、プレイヤーはサイコロを投げ続け、点数と1回目の投げた点数と等しいまでプレイヤーが勝つ.投げた点数と7なら荘家勝.
実行結果:
1回変更:
元のプロジェクトのアドレス:https://github.com/jackfrued/Python-100-Days
Day5
練習する
水仙花数(Narcissistic number)は超完全数字不変量(pluperfect digital invariant,PPDI)、ナルシスト数、自べき乗数、アムス壮数またはアムストロング数(Armstrong number)とも呼ばれ、水仙花数は1つの3桁を指し、その各桁の数字の3乗の和はそれ自体に等しい(例えば:1^3+5^3+3+3^3=153).
for i in range(100, 1000):
x = i // 100
y = (i - 100 * x) // 10
z = i - 100 * x - 10 * y
if(x * x * x + y * y * y + z * z * z == i):
print(i)
実行結果:
PS E:\Nproject> python day5-1.py
153
370
371
407
1回変更:
for i in range(100, 1000):
x = i // 100
y = (i - 100 * x) // 10
# z = i - 100 * x - 10 * y
z = i % 10 # %
# if(x * x * x + y * y * y + z * z * z == i):
if i == x ** 3 + y ** 3 + z ** 3: # **
# print(i)
print(i, end = ' ')
実行結果:
PS E:\Nproject> python day5-1.py
153 370 371 407
それぞれがその約数(真約数、ある数の約数をリストし、その数自体を除いて、残りはその真約数)以下のものと、それ自体に等しい自然数を完全数(Perfect number)と呼び、完璧数または完備数とも呼ばれる.
end = int(input(' :'))
for i in range(2, end):
s = 0
for j in range(1, i):
if i % j == 0:
s += j
if s == i:
print(i, end = " ")
実行結果:
PS E:\Nproject> python day2-1.py
:10000
6 28 496 8128
1回変更:
end = int(input(' :'))
# for i in range(2, end):
for i in range(1, end): # range(1, 1) ,
# s = 0
s = [] #
for j in range(1, i):
if i % j == 0:
# s += j
s.append(j)
# if s == i:
if sum(s) == i: # sum()
print(i, end = " ")
for x in range(101):
for y in range(101 - x):
z = 100 - x - y
if z % 3 == 0 and z / 3 + 5 * x + 3 * y == 100:
print(' %d , %d , %d ' % (x, y, z))
実行結果:
PS E:\Nproject> python day2-1.py
0 , 25 , 75
4 , 18 , 78
8 , 11 , 81
12 , 4 , 84
1回変更:
# for x in range(101):
for x in range(20): #
# for y in range(101 - x):
for y in range(33):
z = 100 - x - y
if z % 3 == 0 and z / 3 + 5 * x + 3 * y == 100:
print(' %d , %d , %d ' % (x, y, z))
フィボナッチ数列は、黄金分割数列、レオナルド・フィボナッチがウサギの繁殖を例に導入したことから「ウサギ数列」とも呼ばれ、1、1、2、3、5、8、13、21、34、・・・数学的には、フィボナッチ数列は、F(1)=1、F(2)=1、F(n)=F(n-1)+F(n-2)(n>=3、n∈N*)
def fib(i):
if i <= 0:
print('error')
return 0
elif i == 1 or i == 2:
return 1
else:
return fib(i - 1) + fib(i - 2)
for n in range(1, 20):
print(fib(n), end = ', ')
print(fib(20))
実行結果:
PS E:\Nproject> python day5-4.py
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
1回変更:
a = 0
b = 1
for i in range(20):
a, b = b, a + b
print(a, end = ' ')
関数を使用しないと速度が大幅に向上します.
from random import randint
x = randint(1, 6)
y = randint(1, 6)
_sum = x + y
if _sum == 7 or _sum == 11:
print('%d, ' % _sum)
elif _sum == 2 or _sum == 3 or _sum == 12:
print('%d, ' % _sum)
else:
while(1):
x = randint(1, 6)
y = randint(1, 6)
_sum2 = x + y
if _sum2 == _sum:
print('%d, ' % _sum2)
break
elif _sum2 == 7:
print('%d, ' % _sum2)
break
実行結果:
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
3,
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
6,
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
7,
PS E:\Nproject> python day2-1.py
6,
PS E:\Nproject> python day2-1.py
11,
1回変更:
from random import randint
money = 1000
while money > 0:
print(' :', money)
needs_go_on = False
while True:
debt = int(input(' :'))
if debt > 0 and 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:
current = randint(1, 6) + randint(1, 6)
print(' %d ' % current)
if current == 7:
print(' ')
money -= debt
needs_go_on = False
elif current == first:
print(' ')
money += debt
needs_go_on = False
print(' , !')