I can’t create an infinite loop in the same loop. There are no errors, but the program just skips some of the code starting from the second while.
while True:
print("Enter'Add' Add ")
user_input = input(": ")
if user_input == "Add" or "Add":
while True:
numb1 = float(input("Enter : "))
numb2 = float(input("Enter : "))
print(str(numb1), str(numb2))
Answer 1, authority 100%
>>> while True:
... print("Enter'Add' Add ")
... user_input = input(": ")
... if user_input.lower() == "Add":
... while True:
... numb1 = float(input("Enter : "))
... numb2 = float(input("Enter : "))
... print(str(numb1), str(numb2))
...
Enter'Add' Add
: Add
Enter : 10
Enter : 5
10.0 5.0
Enter : 15
Enter : 3
15.0 3.0
Enter : 123
Enter : 10
123.0 10.0
Enter :
The program exactly follows the logic that you put into it, if you correct the incorrectly composed condition.
What comes after the cycle is not skipped – the queue simply does not reach it. If you need any other code to be executed after the loop, it makes sense to exit the loop:
>>> while True:
... print("Enter'Add' Add ")
... user_input = input(": ")
... if user_input.lower() == "Add":
... while True:
... numb1 = float(input("Enter : "))
... numb2 = float(input("Enter : "))
... print(str(numb1), str(numb2))
... if numb1 == numb2: # the condition under which the loop ends. I used the condition of equality of two numbers, you may have it different
... break
... print('***** The endless loop is over, the code is executed further')
...
Enter'Add' Add
: Add
Enter : 3
Enter : 2
3.0 2.0
Enter : 3
Enter : 5
3.0 5.0
Enter : 5
Enter : 5
5.0 5.0
***** The endless loop is over, the code is executed further
Enter'Add' Add
:
Regarding the error in your code:
user_input = input()
if user_input == "Add" or "Add":
print('This condition is always met!')
You can check it yourself. The fact is that, taking into account the priorities of operations, the condition looks like this:
if (user_input == "Add") or ("Add"):
pass # do something
Boolean expression user_input == "Add"
can take either a true value or a false one, but the boolean value of the line "Add"
is always true, because any non-empty string has a true boolean representation. If you want to use exactly this approach to the solution, and not by converting to lower case, the condition should be of the form:
if user_input in ("Add", "Add"):
pass # do something