この記事を三行にまとめると
コラッツ予想の再帰処理アルファベットを大文字で出力
数字を2倍し続ける
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。
偶数だったら2で割り奇数だったら3倍して1を足す関数
def Collatz(n):
if n % 2 == 0:
n = n // 2
else:
n = n * 3 + 1
print(n)
Collatz(2)
Collatz(3)
答えが1より大きかったらもう一度同じ計算をする
def Collatz(n):
n = n // 2 if n % 2 == 0 else n * 3 + 1
if n > 1:
n = n // 2 if n % 2 == 0 else n * 3 + 1
print(n)
Collatz(3)
答えが1になるまで処理を繰り返す
def Collatz(n):
n = n // 2 if n % 2 == 0 else n * 3 + 1
if n > 1:
Collatz(n)
else:
print('1になりました')
Collatz(3)
何回計算したかを出力
def Collatz(n, c = 1):
n = n // 2 if n % 2 == 0 else n * 3 + 1
if n > 1:
c += 1
Collatz(n, c)
else:
print(str(c) + '回で1になりました')
Collatz(3)
while文で処理する場合
def Collatz(n):
c = 0
while n > 1:
n = n // 2 if n % 2 == 0 else n * 3 + 1
c += 1
print(str(c) + '回で1になりました')
Collatz(3)
リストのアルファベットを大文字で出力
arr = ['abc', 'def']
for text in arr:
print(text.upper())
リストが多重だった場合
# 二重の場合
arr = ['abc', 'def', ['www', 'xyz']]
for text1 in arr:
if isinstance(text1, str):
print(text1.upper())
else:
for text2 in text1:
print(text2.upper())
# 三重の場合
arr = ['abc', 'def', ['www', 'xyz', ['tkg', 'orz']]]
for text1 in arr:
if isinstance(text1, str):
print(text1.upper())
else:
for text2 in text1:
if isinstance(text2, str):
print(text2.upper())
else:
for text3 in text2:
print(text3.upper())
再起的に出力
def upper_recursive(arr):
for text in arr:
if isinstance(text, str):
print(text.upper())
else:
upper_recursive(text)
arr = ['abc', 'def', ['www', 'xyz', ['tkg', 'orz']]]
upper_recursive(arr)
数字を2倍し続ける関数
def multiple(n):
n *= 2
print(n)
if n < 1000:
multiple(n)
multiple(2)