在外部打印时打印两次python3

时间:2018-10-15 20:49:25

标签: python-3.x

我一直在做这项作业

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]

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

2 个答案:

答案 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()