在外面打印,同时打印两次 python3



我有这个作业,我一直在做

temperatures = []
def decision():
answer  = input("Do you want to enter a temperature?" + 
""y" for yes. "n" for no: ")
getTemp(answer)
def getTemp(answer):
while answer == "y" or answer == "Y":
temp = int(input("Enter a temperature: "))
temperatures.append(temp)
print("nTemperature Entered!n")
answer = " "
decision()
print("Temperatures entered: ", temperatures)
def main():
decision()
main()

问题是当我输入温度然后按 n 退出 while 循环时,最终输出是多个打印语句。例如,如果我输入:(y's == yes(

y
3
y
5
n

输出为

Temperatures entered: [3,5]
Temperatures entered: [3,5]
Temperatures entered: [3,5]

任何帮助都会很棒...谢谢

问题是getTemp被多次调用,因为它调用了decision,而又调用了getTemp。相反,您应该仅在退出上述链后打印温度,因此您应该将print移动到在main中调用decision之后,因此main应该是:

def main():
decision()
print("Temperatures entered: ", temperatures)

getTemp应该是

def getTemp(answer):
while answer == "y" or answer == "Y":
temp = int(input("Enter a temperature: "))
temperatures.append(temp)
print("nTemperature Entered!n")
answer = " "
decision()

您正在递归。如果你最终想要输入,比如说,5000000000的温度,你肯定会导致堆栈溢出。

您的print在每次decision()执行结束时执行。我建议重组您的代码以不递归(以免永远分配(,或者至少将您的print语句放在您的main中。

例如,您可以这样做

temperatures = []
def decision():
while input("Do you want to enter a temperature?n" + 
""y" for yes. "n" for no: ") in "yY":
getTemp()
def getTemp():
temp = int(input("Enter a temperature: "))
temperatures.append(temp)
print("nTemperature Entered!n")
def main():
decision()
print("Temperatures entered: ", temperatures)
main()

最新更新