Вот еще одно решение: https://github.com/ithkuil/angular-on-server
wiki для получения дополнительной информации
Он возвращает None
, потому что, когда вы рекурсивно называете это:
if my_var != "a" and my_var != "b":
print "You didn't type \"a\" or \"b\". Try again."
print " "
Dat_Function()
.. вы не возвращаете значение.
Итак, во время рекурсии возвращаемое значение отбрасывается, а затем вы отваливаетесь от конца функции. Падение конца функции означает, что python неявно возвращает None
, как это:
>>> def f(x):
... pass
>>> print(f(20))
None
Итак, вместо того, чтобы просто вызывать Dat Function()
в вашем if
, вам нужно return
это.
Я думаю, что вы должны использовать в то время как циклы .
, если my_var! = "a" и my_var! = "b": print "Вы не типа \ "a \" или \ "b \". Повторите попытку. " print "" return Dat_Function ()
blockquote>Учтите, что вы вводите что-то другое, чем «a» и «b», конечно, оно назовет
Dat_Function
, но затем пропустит следующую часть , Что это:else: print my_var, "-from Dat_Function" return my_var
blockquote>И перейдет непосредственно в:
def main (): print Dat_Function (), "-From main ()"
blockquote>Итак, если вы используете while loop как:
while my_var! = "a" и my_var! = "b": print ('вы не написали a или b') return Dat_Function ()
blockquote>Таким образом, я думаю, что вы можете обращаться Это.
def Dat_Function():
my_var = raw_input("Type \"a\" or \"b\": ")
if my_var != "a" and my_var != "b":
print "You didn't type \"a\" or \"b\". Try again."
print " "
return Dat_Function()
else:
print my_var, "-from Dat_Function"
return my_var
def main():
print Dat_Function(), "-From main()"
main()
Чтобы вернуть значение, отличное от None, вам нужно использовать оператор return.
В вашем случае блок if выполняет только возврат при выполнении одной ветви. Либо переместите return вне блока if / else, либо верните оба параметра.
main()
? – Cate 22 July 2013 в 01:49main()
битом ... Вы можете терпеть неудачу столько раз, сколько хотите, то, что «успешно», вернетmy_var
, который будет передан (return
ed) через все рекурсивные вызовы вплоть до исходного вызывающего. Который, да,main()
. – roippi 22 July 2013 в 01:54return Dat_Function()
, вы действительно просто вызываетеDat_Function()
снова вmain()
.Dat_Function()
теперь возвращает функцию, иmain()
перешел на вызов. – Cate 22 July 2013 в 01:58