我一直在做这项作业
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 = =是)
y
3
y
5
n
输出为
Temperatures entered: [3,5]
Temperatures entered: [3,5]
Temperatures entered: [3,5]
任何帮助都会很棒...谢谢
答案 0 :(得分:0)
问题是getTemp
被调用多次,因为它调用了decision
,而后者又调用了getTemp
。取而代之的是,您仅应在退出上述链后才打印温度,因此应将print
移至decision
中的main
之后,将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()
答案 1 :(得分:0)
您正在递归。如果您最终想输入例如5亿个温度,则肯定会导致堆栈溢出。
您的print
在每次decision()
执行结束时执行。我建议您对代码进行重组,以使其不递归(以免您永远分配代码),或者至少将print
语句放入main
中。
例如,您可以进行this
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()