def collatz(num):
'''collatz number '''
if num % 2 == 0:
n = num / 2
return n
elif num % 2 == 1:
n = 3 * num + 1
return n
# print(collatz(100))
# print(collatz(50))
# print(collatz(25))
num = int(input('请输入一个整数:'))
while True:
if num == 1:
print(1)
break
else:
num = collatz(num)
print(num)
2 is_palindrome回文数
def is_palindrome(n):
n = str(n)
m = n[::-1]
return n == m # 回文格式
output = filter(is_palindrome, range(1, 1000)) # 回数
print(list(output))
3 love
print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
4 map函数
def f(x):
return x*x
w = map(f,[i for i in range(10)])
print(list(w))
5 汉若塔
'''
请编写 move(n, a, b, c)函数,它接收参数 n,表示 3 个柱子 A、 B、 C
中第 1 个柱子 A 的盘子数量,然后打印出把所有盘子从 A 借助 B 移动
到 C 的方法,例如:
def move(n, a, b, c):
----
pass
----
# 期待输出:
# A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C
move(3, 'A', 'B', 'C')
'''
def move(n, a, b, c): # 汉诺塔的移动
if n == 1:
print('move:', a, '--->', c) # 1个直接从a移到c
else:
move(n-1, a, c, b) # 分成2份,上面一份先从a移到b
move(1, a, b, c) # 剩下1个从a移到c
move(n-1, b, a, c) # 上面一份从b移到c
move(5, 'A', 'B', 'C')
def f(x):
while x == 1:
return 1 # 一个时,返回一次
return 2 * f(x-1) + 1 # 这是推导公式
print('一共移动了%s次' % f(5))