跳转到python中程序的确切部分

2024-06-16 14:17:14 发布

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

我的问题是,如果我为x1或x2输入了错误的值,我的程序会成功地跳转到Func1(),但当我第二次正确输入它们时,程序会返回None。 我知道他为什么不返回None,但我不知道如何在不编写20-30行代码的情况下解决这个问题。我在寻找一些优雅的解决方案。泰铢

def Func1():
    value1=input('x1>')
    value2=input('x2>')
    if x1 meets condition:
        if x2 meets condition:
            return x1+x2
    else:
        Func1()

def Func2(data2):
    do somthing...

def main():

    user=ActiveUser()
    data1=Func1()
    data2=Func2(data1)
    DoSomething(data1,data2)

Tags: 代码程序noneinputifdef错误condition
3条回答

不返回对func1的递归调用。你知道吗

x1和x2测试需要在同一个语句中。否则,如果x1 meets cond但是!x2 meets cond,您仍然不返回任何内容。你知道吗

def Func1():
    value1=input('x1>')
    value2=input('x2>')
    if x1 meets condition and x2 meets condition:
        return x1+x2
    else:
        return Func1()

这是一个实际的可复制工作示例,与目前为止所有其他答案都没有实际运行不同:

条件是两个数字都必须大于10:

 def Func1():
   v1 = input("v1> ")
   v2 = input("v2> ")
   if v1 > 10 and v2 > 10:
     return v1 + v2
   else:
     print "Try again"
     return Func1()

试运行:

>>> Func1()
v1> 1
v2> 2
Try again
v1> 2
v2> 3
Try again
v1> 12
v2> 23
35

我不认为实现递归调用是一个好主意。使用while循环?你知道吗

像这样的事情应该可以做到:

def Func1():
    value1=None
    value2=None
    while not (x1 meets condition and x2 meets condition):
        value1=input('x1>')
        value2=input('x2>')
    return x1+x2

def Func2(data2):
    do somthing...

def main():
    user=ActiveUser()
    data1=Func1()
    data2=Func2(data1)
    DoSomething(data1,data2)

相关问题 更多 >