练习
练习1:n层台阶,每次至少走1层,最多走3曾,请问一共有多少种走法?
# if __name__ == '__main __' # #在进入函数调用之前要保存当前的执行现场 # #函数的执行现场是保存在一种称为栈的内存空间上 # #栈是一种先进后出的存储结构 # foo() #函数的递归调用 #1.收敛条件--让递归在有限的次数完成或者进行回溯 #如果递归无法在有限次数内收敛就有可能导致RecursionError #2.递归公式 def walk(n): if n < 0: return 0 elif n == 0: return 1 return walk(n -1) + walk (n - 2) + walk (n - 3) 练习2:采用递归完成1到100的加法运算
def my_sum(n):
if n == 1:
return 1
else:
return n + my_sum(n - 1)
def main():
print(my_sum(100))
if __name__ == '__main__':
main()
练习3:电脑产生随机数,人来猜,每次猜后计算机给出提示,直到猜对为止
from random import randint
def main():
random_number = randint(1, 100)
print(random_number)
counter = 0
while True:
guess_number = int(input('请输入你要猜测的数字:'))
counter += 1
if guess_number < random_number:
print('猜小了!')
elif guess_number > random_number:
print('猜大了!')
else:
print('猜对了!')
break
if counter > 7:
print('智商着急')
if __name__ == '__main__':
main()
练习4:输入三个正整数,并输出其中最大值和最小值
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
the_max = a > b and a or b #如果a大于b就输出a,否则输出b
the_max = c > the_max and c or the_max
print('the max is:',the_max)
练习5:输入三个正整数,输出其中最大值
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a > b:
the_max = a
else:
the_max = b
if c > the_max:
the_max = c
print('The max is:',the_max)
练习6:输入两个正整数,求其最大公约数和最小公倍数
def gcd(x,y):
(x,y) = (y,x) if x>y else (x,y)
for num in range(x,0,-1):
if x % num == 0 and y % num == 0:
return num
def lcd(x,y):
return((x * y) // gcd(x,y) )
def main():
print(gcd(48,3))
print(lcd(48,3))
if __name__ == '__main__':
main()
练习7 :21根火柴,人先拿 计算机后拿。一次最多拿4根,最少1根,谁拿到第21根谁胜利,需保证计算机获胜
from random import randint
def main():
total = 21
while total > 0:
print('总共还有%d根火柴!',total)
while True:
num = int(input('拿几根火柴:'))
if 1<= num <=4 and num <= total:
break
total -= num
if total > 0:
com = randint(1, min(4,total))
print('计算机拿走了%d根火柴'% com)
total -= com
if total == 0:
print('计算机拿到了最后一根火柴,你赢了!')
else:
print('你拿到了最后一根火柴,你输了!')
if __name__ == '__main__':
main()
练习8:判断一个数是否是素数
def parameter(num): for factor in range(2,num): if num % factor == 0: return False else: return True if num != 1 else False def main(): print(parameter(420)) if __name__ == '__main__': main()