0
Can anyone explain how to do a loop while using an if-else statement.
#enter a number b/w 1 and 11, stop when user enters 0 or total goes over 21 user_num = int(input()) total = 0 while user_num >= 1 and user_num <= 11: if user_num != 0 or total < 21: print(user_num) total += user_num else: print("your total is", total) #is an infinite loop but not understand why
3 Answers
0
user_num never changes. Once total exceeds 21 you print "your total is" ... forever. Why not put an assignment in the else clause like user_num = 99 to break the loop? or you can use a break statement. Search on "break" and "continue" in Python for usage details.
0
In your code is the condition of the while loop always true, because you assigned user_num outside the while-loop. So the value never can change and the condition is true again and again.
the assignment of user_num has to be into the while-loop!!!
0
move the input to inside the while loop and add a break after the line "your total is". otherwise your loop will either never run (user inputs a number outside the range) or it will infinitely run (the user input is always the same, so the while loop is always true).
better way is to do it this way..
total = 0
while True: #start infinite loop
user_num = input ('enter a num > 0 and < 11: ')
if user_num < 1 or user_num > 10:
print ('entered a bad num')
elif total >= 21:
print ('your total is ', total)
break #exits the loop only if total is 21 or more
else:
total += user_num
print (user_num)