循环以两个变量开头,我们将它们分别命名为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
我的第一个问题是,用户应该输入数字,而代码也在检查字符串。我该如何解决?我的第二个问题是,如果输入不是数字或“加”,我不确定如何重新提示每个输入。
答案 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
希望它会有所帮助:)