【问题标题】:While loop problem.The result isn't what I expected虽然循环问题。结果不是我所期望的
【发布时间】:2020-05-11 14:57:35
【问题描述】:

总的来说,我是 Python 和 Stackoverflow 的新手,如果我的格式很糟糕而且我不擅长英语,我很抱歉。但我对这段代码有疑问。

n = int(input("Fibonacci sequence (2-10): "))
a = 0
b = 1
sum = 0
count = 1
f = True
print("Fibonacci sequence up to {}: ".format(n), end = " ") 
while(count <= n):
      print(sum, end = " ")
      count += 1
      a = b
      b = sum
      sum = a + b

这是代码的结果

Fibonacci sequence (2-10): 2
Fibonacci sequence up to 2: 0 1

这是我所期望的结果。

Fibonacci sequence (2-10): 1
Invalid Number!
Fibonacci sequence (2-10): 15
Invalid Number!
Fibonacci sequence (2-10): 10
Fibonacci sequence up to 10: 0 1 1 2 3 5 8 13 21 34

【问题讨论】:

  • 您希望Invalid Number! 来自哪里?我在您的代码 sn-p 中的任何地方都没有看到。

标签: python python-3.x while-loop


【解决方案1】:

看起来您只需要添加一个额外的验证步骤以确保输入在所需的范围内。应该这样做。

while True:
    n = int(input("Fibonacci sequence (2-10): "))
    if n<2 or n>10:
        print("Invalid Number!")
    else:
        a = 0
        b = 1
        sum = 0
        count = 1
        f = True
        print("Fibonacci sequence up to {}: ".format(n), end = " ") 
        while(count <= n):
              print(sum, end = " ")
              count += 1
              a = b
              b = sum
              sum = a + b
        break

编辑:就@Barmar 而言,外部循环有助于避免在输入不在所需范围内时重新运行代码。

【讨论】:

  • 我认为还应该有一个while 循环,当他们给出无效号码时重试。
猜你喜欢
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多