饿火柴 发表于 2023-4-3 22:37:21

小鱼卵求助!关于程序结束后询问是否重试,然后使程序循环

本帖最后由 饿火柴 于 2023-4-3 22:36 编辑

原始代码如下:

def fab(n):
    a1 = 1
    a2 = 1
    a3 = 1

    if n < 1:
      print('输入有误!')
      return -1

    while (n-2) > 0:
      a3 = a1 + a2
      a1 = a2
      a2 = a3
      n -= 1

    return a3
   
月份 = int(input('请输入月份:'))
result = fab(月份)
print('总共有%d对小兔子出生!' % result)

我想让程序结束后询问是否重试,然后就成了这样:

def fab2():
    def fab(n):
      a1 = 1
      a2 = 1
      a3 = 1

      if n < 1:
            print('输入有误!')
            return -1

      while (n-2) > 0:
            a3 = a1 + a2
            a1 = a2
            a2 = a3
            n -= 1

      return a3
   
    月份 = int(input('请输入月份:'))
    result = fab(月份)
    print('总共有%d对小兔子出生!' % result)
    重试 = input('是否重试:')

while 重试 == '是':
    if True:
      fab2()
    else:
      print('结束!')
但是没有使函数fab2()运行,所以加上了,就成了这样:

def fab2():
    def fab(n):
      a1 = 1
      a2 = 1
      a3 = 1

      if n < 1:
            print('输入有误!')
            return -1

      while (n-2) > 0:
            a3 = a1 + a2
            a1 = a2
            a2 = a3
            n -= 1

      return a3
   
    月份 = int(input('请输入月份:'))
    result = fab(月份)
    print('总共有%d对小兔子出生!' % result)
    重试 = input('是否重试:')
fab2()        #在这里首次运行函数

while 重试 == '是':
    if True:
      fab2()
    else:
      print('结束!')
结果:

请输入月份:20
总共有6765对小兔子出生!
是否重试:是
Traceback (most recent call last):
File "C:/Users/EHC/Desktop/1.py", line 25, in <module>
    while 重试 == '是':
NameError: name '重试' is not defined

我能想到的问题是:无法在外部调用函数内的变量:重试 == input ('是否重试:')
有什么解决方法吗?

isdkz 发表于 2023-4-3 22:39:11

def fab2():
    global 重试
    def fab(n):
      a1 = 1
      a2 = 1
      a3 = 1

      if n < 1:
            print('输入有误!')
            return -1

      while (n-2) > 0:
            a3 = a1 + a2
            a1 = a2
            a2 = a3
            n -= 1

      return a3
   
    月份 = int(input('请输入月份:'))
    result = fab(月份)
    print('总共有%d对小兔子出生!' % result)
    重试 = input('是否重试:')
fab2()      #在这里首次运行函数

while 重试 == '是':
    if True:
      fab2()
    else:
      print('结束!')

饿火柴 发表于 2023-4-3 22:49:41

isdkz 发表于 2023-4-3 22:39
def fab2():
    global 重试
    def fab(n):


太感谢了{:5_108:}
页: [1]
查看完整版本: 小鱼卵求助!关于程序结束后询问是否重试,然后使程序循环