print "1) Add"
print "2) Substract"
print "3) Multiply"
print "4) Divide"
print "5) Exit"
x=input("Choose an operation: ")
y=input("How many numbers do you need to operate: ")
op=1
lista=[]
while y>0:
a=input("Value"+" "+str(op)+": ")
litlist=[a]
lista=lista+litlist
y=y-1
op=op+1
while x!=5:
if x==1:
b=0
for n in lista:
b=b+n
print b
elif x==2:
b=0
for n in lista:
if lista[0]==n:
b=b+n
else:
b=b-n
print b
elif x==3:
b=1
for n in lista:
b=b*n
print b
elif x==4:
b=1
for n in lista:
if lista[0]==n:
b=b*n
else:
b=b/float(n)
print b
此计划旨在:
我想知道需要进行哪些操作,打印结果后需要再次操作多少个数字。 然后输入数字等等。
我知道我可以在while中使用另一个输入来让它再次询问数字并停止循环但是有两个whiles并且不允许我再次询问Y,只是X.所以能够很酷回到第6行并重新开始 谢谢你的回答:)
答案 0 :(得分:5)
您正在寻找goto
声明。早在1968年,Dijkstra写了一篇名为Go To Statement Considered Harmful的着名论文,解释了为什么你不应该寻找goto
。
正确的做法是构建代码。
最简单的变化是:
print "1) Add"
print "2) Substract"
print "3) Multiply"
print "4) Divide"
print "5) Exit"
while True:
x=input("Choose an operation: ")
# ...
但是,你可以做得更好。获取孤立的代码片段并将它们分成可以调用的函数。如果两个(或者,在您的情况下,四个)代码段几乎相同,则将它们抽象为一个带有参数的函数,而不是重复相同的代码四次。等等。
但实际上,即使没有任何功能,你也可以摆脱大部分的重复:
import operator
print "1) Add"
print "2) Substract"
print "3) Multiply"
print "4) Divide"
print "5) Exit"
while True:
x=input("Choose an operation: ")
if x==5:
break
y=input("How many numbers do you need to operate: ")
operands=[input('Value {}'.format(i+1)) for i in range(count)]
if x==1:
op, value = operator.add, 0
elif x==2:
op, value = operator.sub, 0
elif x==3:
op, value = operator.mul, 1
elif x==4:
op, value = operator.truediv, 1
for operand in operands:
value = op(value, operand)
print value
我必须import operator
以上的唯一原因是获得add
,sub
等功能。这些都是微不足道的,所以你可以自己写一下:
def add(x, y):
return x+y
# etc.
然后,而不是这个:
op, value = operator.add, 0
......这样做:
op, value = add, 0
......和其他三个人一样。
或者您可以使用lambda
就地定义它们:
op, value = (lambda x, y: x+y), 0
但是,你不应该做其中任何一个。就像定义add
,sub
,mul
和truediv
一样简单,不定义它们更简单。 Python带有“电池包含”是有原因的,如果你不使用它们,那么你的生活(以及任何必须阅读,维护等代码的人的生活)都会变得更加难以完全没有理由。
答案 1 :(得分:0)
Python不允许您返回到特定的行号,即使它确实存在,您也不应该利用该功能,因为它会导致无法维护的程序。
相反,学习如何使用函数和构造代码,以便函数有意义。
例如:
def get_number_of_operations():
return input("How many numbers do you need to operate: ")
然后你可以通过调用函数重复该函数中的代码块,例如:
y = get_number_of_operations()