我有这个作业,我一直在做
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()