第5章课后习题参考答案
一、单选题
>>> def funX():
x=5
def funY():
nonlocal x
x+=1
return x
return funY
>>> a=funX()
>>> print(a())
>>> print(a())
>>> print(a())
>>> print(a())
三、设计题
def sum(n):
a = 0
b = 1
sum = 0
for i in range(n):
sum += a
a, b = b, a + b
return sum
print("The sum of FIB is", sum(8),"!")
def jzt(m,n):
for i in range(1,n):
print(' '*(20-(i-1)),m*(2*i-1))
a= int (input("输入打印行数:"))
b= str (input("要打印的字符:"))
jzt(b,a+1)
def check(msg):
res = {'num': 0,'string': 0,'space': 0,'other': 0,}
for s in msg:
if s.isdigit(): #判断属于数字
res['num'] += 1
elif s.isalpha(): #判断属于字符串
res['string'] += 1
elif s.isspace(): #判断属于空格
res['space'] += 1
else:
res['other'] += 1
return res
res = check('hello name:jim passowrd:win2008')
#给函数传入参数‘hello name:jim passowrd:win2008’
print(res)
#结果是{'num': 4, 'string': 23, 'space': 2, 'other': 2}
def sxh (z) :
q = z % 10
w = z // 10 % 10
e = z // 100
if z == q * q * q + w * w * w + e * e * e:
return True
exit(1)
return False
if sxh(153):
print("是水仙花数" )
else:
print("不是水仙花数")
def sum_digits(number):
# Base Case
if number == 0:
return 0
else:
# Mod (%) by 10 gives you the rightmost digit (227 % 10 == 7),
# while doing integer division by 10 removes the rightmost
# digit (227 // 10 is 22)
return (number % 10) + sum_digits(number // 10)
print(sum_digits(57))
import math
def sushu(m):
k = int(math.sqrt(m))
for i in range(2, k+2):
if m % i == 0:
break
if i == k+1:
return True
else:
return False
a=int(input('请输入一个数:'))
if a==1:
print('1既不是素数也不是合数')
else:
if sushu(a)==True:
print(a,'是素数')
else:
print(a,'是合数')
print('四位数素数为:')
n=0
for i in range(1001,10000,2):
if sushu(i)==True:
if n%30==0:
print()
print(i,end=' ')
n=n+1