|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# p6_7_1.py
def fab(n):
b = 0 # 为何需要这个定义?为何不是a?其他值不可以?
if n > 0:
a, b = 1, 1
for x in range(2, n):
a, b = b, a + b
return b
while True:
s = input('请输入月数:').strip() # 字符串.strip()表示删除字符串前边和后边所有的空格
#if int(s) <= 0:
#print('输入错误!')
#if int(s) > 0:
#print(f' {s} 个月总共有 {fab(int(s))} 对小兔子!', '\n')
#else:
#break
if len(s) > 0 :
print(f' {s} 个月总共有 {fab(int(s))} 对小兔子!', '\n')
else:
break
我的疑问:
1、为什么会想到用这种方式?或者说这种方式是利用什么思路?
2、如果我想实现以下效果,代码应如何写?
请输入月数:0
输入错误!
请输入月数:20
20 个月总共有 6575 对小兔子!
请输入月数:
……
1、是的,使用if len(s) == 0可以判断用户输入是否为空。如果用户没有输入或输入了空白字符,那么经过strip()处理后,s字符串的长度就会变为0,因此可以利用len()函数判断。
2、根据您的意思,可以将代码做如下修改:def fab(n):
b = 0
if n > 0:
a, b = 1, 1
for x in range(2, n):
a, b = b, a + b
return b
while True:
s = input('请输入月数:').strip()
if len(s) == 0:
continue
elif int(s) <= 0:
print('输入错误!')
else:
print(f' {s} 个月总共有 {fab(int(s))} 对小兔子!', '\n')
print() # 换行
在这个代码中,当用户输入为空时,使用continue语句跳过本次循环,继续等待用户输入。当用户输入小于等于0时,输出“输入错误!”并换行;当用户输入大于0时,计算出对应的斐波那契数列值,并输出结果,然后再换行。无论输入是否正确,都会在最后进行一次换行,以使提示信息和下一次输入分隔开来。
|
|