Python:2输入变量循环会一直运行直到用户告诉它停止?

时间:2018-11-03 08:46:12

标签: python

循环以两个变量开头,我们将它们分别命名为X和Y,都为0。系统会提示用户输入要添加到X的数字,然后输入要添加到Y的数字。循环重复进行,让用户继续添加两个变量,直到用户希望它们停止运行-我想他们可以输入“添加”作为输入之一?

如果用户输入的不是数字,我还需要它再次输入 ,但前提是用户输入的不是“ add”。如果为“加”,则循环结束,并显示两个总数。如果输入是float或int,则循环继续。否则,它将再次提示输入。这是两个输入中的每个输入。

我可以分别做这两个事情,但是在将两个需求合并到同一个循环结构中时遇到麻烦。

到目前为止,我的代码基本上是这样的:

while (x != 'add') and (y != 'add'):
    # ask input for x
    if x != 'add':
        #ask input for y
        if (x != 'add') and (y != 'add'):
            # operations that add inputs to running variables
        else:
            pass
    else:
        pass
# print both variable totals here

我的第一个问题是,用户应该输入数字,而代码也在检查字符串。我该如何解决?我的第二个问题是,如果输入不是数字或“加”,我不确定如何重新提示每个输入。

3 个答案:

答案 0 :(得分:1)

欢迎您!

通常您都有正确的想法,这是将其转换为代码的方法。

x_total = 0
y_total = 0

while True:
    first_input = input('Enter the next value of x: ')
    if first_input == 'add':
        break
    x_total += float(first_input)

    second_input = input('Enter the next value of y: ')
    if second_input == 'add':
        break
    y_total += float(second_input)

print('x = ', x_total)
print('y = ', y_total)

请注意,在Python中,我们可以通过将类型number_string = '1239'称为float来将字符串number = float(number_string )转换为浮点数。 int对于整数也是如此。 documentation包含有用的食谱和用法示例,通常在我不确定需要什么时就从这里开始。

由于您提到您是Python的新手,所以我将提到比其他语言更多的内容,Python中存在强大的习惯用法。 Zen of Python是对该概念的一种介绍。问“这是Pythonic吗?”通常很有用。当您第一次开始时,因为可能有确定的方法来做您正在做的事情,这将变得更清晰,更不易出错并且运行速度更快。

slide deck是对某些Python原理的很好看,它是针对Python 2.x量身定制的,因此某些语法是不同的,但是这些思想在3.x中同样重要。

满足原始请求的一种更Python化的方法(尽管对于新的Python用户而言可能不太容易理解)是使用任何意外的值或转义符退出添加过程。

x_total = 0
y_total = 0

while True:

    try:

        first_input = input('Enter the next value of x: ')
        x_total += float(first_input)

        second_input = input('Enter the next value of y: ')
        y_total += float(second_input)
    except (ValueError, EOFError):
        break
    except KeyboardInterrupt:
        print()
        break

print('x =', x_total)
print('y =', y_total)

现在程序的用户可以键入任何非浮点值来退出,甚至可以使用按键中断(例如ctrl + Z或ctrl + C)。我在PowerShell中运行了它,为您提供了一些用法示例:

退出时,这是一个常见的成语:

Enter the next value of x: 1
Enter the next value of y: 2
Enter the next value of x: 3
Enter the next value of y: exit
x = 4.0
y = 2.0

您的原始案例,加上:

Enter the next value of x: 1
Enter the next value of y: 2
Enter the next value of x: 3
Enter the next value of y: add
x = 4.0
y = 2.0

使用Ctrl + Z:

Enter the next value of x: 1
Enter the next value of y: 2
Enter the next value of x: 3
Enter the next value of y: ^Z
x = 4.0
y = 2.0

使用Ctrl + C:

Enter the next value of x: 1
Enter the next value of y: 2
Enter the next value of x: 3
Enter the next value of y:
x = 4.0
y = 2.0

答案 1 :(得分:0)

您可以应用“无尽”循环,并使用字符串输入(例如“ add”或任何其他输入)或按Enter键将其中断:

while True:
         try:
            x=float(input("give x or enter to stop: "))
            X+=x
            y=float(input("give y or enter to stop: "))
            Y+=y
         except ValueError:
             print(X,Y)
             break

答案 2 :(得分:0)

我知道您要求在循环后输出结果,但是我决定在Python中断循环之前进行输出。这是代码:

print("If you want to end the program input 'add'.")
x_value = 0
y_value = 0
while True:
    x_input = str(input("Value of X:"))
    if x_input != 'add':
        y_input = str(input("Value of Y:"))
        if (x_input != 'add') and (y_input != 'add'):
            x_value += int(x_input)
            y_value += int(y_input)
        elif y_input == "add":
            x_value += int(x_input)
            print("Value of X:", str(x_value))
            print("Value of Y:", str(y_value))
            break
    elif x_input == "add":
       print("Value of X:", str(x_value))
       print("Value of Y:", str(y_value))
       break

希望它会有所帮助:)