【问题标题】:While loop adding two numbersWhile循环添加两个数字
【发布时间】:2018-10-16 21:59:55
【问题描述】:

我想写一个非常基本的代码。 添加两个数字,下一个添加用户给定的另一个数字,打印结果,要求另一个,添加到上一个结果,打印新结果。

我已经开始这样做了:

a=int(raw_input('give a number'))
b=int(raw_input('give second number'))
y=True
n=False
while input('Continue? (y/n)') != 'n':
   c = a + b
   print c
   b = int(raw_input('give another number'))

好的,我根据您的提示正确了代码。我很感激,但它仍然不起作用。它添加两个数字,打印结果然后要求另一个添加到结果(现在可以)但是当您输入另一个数字时添加到 a 然后打印。 或许你明白什么地方出了问题?

当我输入“n”时它并没有结束程序

【问题讨论】:

  • 那么请用文字告诉我们您想要的停止条件。非整数(例如字母“x”)?根本没有输入(用户只需按回车键)?
  • while input('Continue? (y/n)') != 'n':
  • 如果 print d 打印出您期望它打印的内容,则看起来您使用的是 Python 2.x,应该查看 raw_input
  • 它应该询问用户是否要停止,然后输入“end”应该结束程序
  • @wiedzminYo 然后你可以像这样要求用户输入:while input('please enter "end" to exit'),类似于@C.B.上面的评论

标签: python while-loop


【解决方案1】:

我会避免使用input() 代替raw_input()(更安全,并且input() 在Python 3 中被删除)。有了它,您可以自己将输入转换为一个数字,方法是用int() 或float() 将其包装起来。那么你有几种可能:

永远循环,如果转换出错则结束循环:

...
while True:
    try:
        b = int(raw_input('give another number ("x" to exit)'))
    except ValueError:
        break
    ...

或者,如果您看到一些标记值,例如 0(方便地计算为假),则中断。

a = 1
b = 2
while b:
    a = a + b
    print a
    b = int(raw_input('give another number'))

【讨论】:

  • 感谢有关 raw_input 的建议。但是有一个问题,在我尝试了你的方法之后,它没有添加 sum a+b 只是 print ab like a=3 b=2 print c=32 我不明白为什么
  • @wiedzminYo raw_input 获取字符串。您需要将它们转换为带有int 或float 的数字。
【解决方案2】:

在包括 Python 在内的大多数编程语言中,条件的计算结果必须为真或假。在这种情况下,字符串 "condition" 将始终评估为 true,因为只有空字符串评估为 false。为了离开while 循环,您必须首先确定停止循环所需的条件。与

while condition: pass

condition 可以是一个if 语句,也可以是一个可简化为True 或False 的对象。大多数对象(例如列表、元组和字符串)在不为空时计算为 True,在为空时计算为 False。另一个常见的情况是两个值之间的比较。比如

1 < 2

或

a is b

【讨论】:

    【解决方案3】:

    您可以检查的最简单的条件是 EOF(文件结尾)。那是当用户不输入数字而只输入回车时。

    您可以告诉用户如何结束程序。所以你还必须给他们写一条指令,例如

    b=input('give another number or type <enter> to end')
    

    我也是初学者。我知道这个解决方案很简单,但它确实有效。

    a=int(raw_input('Give a number'))
    
    while True:
        print a
        userIn = (raw_input('Give another number or <cr> to end)'))
        if not userIn:
           break
        b = int(userIn)
        a = a + b
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 2021-02-08
      • 2016-08-05
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2015-01-23
      相关资源
      最近更新 更多