程序不返回任何内容

2024-05-29 05:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我看到这个Flowchart,决定用它做一个程序。问题是,如果我第一次输入“no”,它只返回“gooutside”。所有其他返回“无”。我正在使用Python 2.7

def waitawhile():
    print "Wait a while"
    rain2 = raw_input("Is it still raining?")
    if rain2.lower() == "no":
        return "Go Outside"
    elif rain2.lower() == "yes":
        waitawhile()
def Raining():
    print "Is it raining?"
    rain = raw_input()
    if rain.lower() == "no":
        return "Go Outside"
    elif rain.lower() == "yes":
        print "Have Umbrella?"
        umbrella = raw_input()
        if umbrella.lower == "yes":
            return "Go Outside"
        elif umbrella.lower() == "no":
            waitawhile()
print Raining()

Tags: nogoinputrawreturnifloweryes
2条回答

问题在于对waitawhile的调用(从Raining和从waitawhile本身)。调用它之后,您将丢弃返回值而不返回任何内容。要解决此问题,请将呼叫从:

waitawhile()

收件人:

return waitawhile()

确保对于这两个函数,如果不执行return语句,就无法到达函数的结尾

您的程序有三个问题,以下是已修复的问题:

def waitawhile():
    print "Wait a while"
    rain2 = raw_input("Is it still raining?")
    if rain2.lower() == "no":
        return "Go Outside"
    elif rain2.lower() == "yes":
        return waitawhile()
def Raining():
    print "Is it raining?"
    rain = raw_input()
    if rain.lower() == "no":
        return "Go Outside"
    elif rain.lower() == "yes":
        print "Have Umbrella?"
        umbrella = raw_input()
        if umbrella.lower() == "yes":
            return "Go Outside"
        elif umbrella.lower() == "no":
            return waitawhile()
print Raining()

工作原理如下:

>>> ================================ RESTART ================================
>>> 
Is it raining?
yes
Have Umbrella?
yes
Go Outside
>>> ================================ RESTART ================================
>>> 
Is it raining?
yes
Have Umbrella?
no
Wait a while
Is it still raining?yes
Wait a while
Is it still raining?no
Go Outside
>>>

程序中的问题是逻辑错误,因此解释器不会向您显示语法错误:

  1. 您在if条件中使用了.lower而不是.lower(),并且它总是false
  2. 您忽略了waitawhile()方法的返回,而必须将它们返回给print方法

相关问题 更多 >

    热门问题