My first function returns (a, b). The second function must control it if (a, b) are True or False. If it is False call again the first function until the user put in right numbers.
It dose not work. Is it a good idea to do that in this way or not?

``````def lasin ():
a=int( input ("Put in a 1<digit<53\n"))
b=int( input ("put in a 1<digit<53\n"))
return a,b

def kontroll(a,b):
while True:
try:
if a>1 and a<53:
break
elif b>1 and b<53:
break
except NameError:
print "Try again"
lasin()``````

Thank alot for help and tips!

3
Contributors
3
Replies
4
Views
10 Years
Discussion Span
Last Post by Mackjan

Don't you want to say something like `a,b = lasin()` instead of just `lasin()` ?

You understand, of course, that the variables a and b inside function lasin() are local to that function call, and disappear completely and forever after the return. They bear no relation whatsoever to the a and b in kontroll().

1. when a and b are outside ]1, 53[, you do nothing except looping while true (infinite loop) - look at indentation.
2. If 1<a<b, you don't control if b is allright. You immediately break the loop

``````def lasin ():
a=int( input ("Put in a 1<digit<53\n"))
b=int( input ("put in a 1<digit<53\n"))
return a,b

def kontroll(a,b):
while True:
try:
if a>1 and a<53 and b>1 and b<53:
break
except NameError:
print "Try again"
(a,b)=lasin()``````

Thanks a lot, I have tried but the exception part of program didnĀ“t works. I changed my code and I expect if a user put a letter instead of a digit the exception part of program must take care of mistake, , and give him chance to do it again.

``````def lasin ():
a=int( input ("Put in a 1<digit<53\n"))
b=int( input ("put in a 1<digit<53\n"))
return a,b
def kontroll(a,b):
while True:
try:
if a>1 and a<53 and b>1 and b<53:
break
print "Try again"
a,b =lasin()
except NameError:
print "Put a digit not a letter"

a,b=lasin()
kontroll(a,b)``````
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.