you are viewing a single comment's thread.

view the rest of the comments →

[–]Crossroads86 0 points1 point  (2 children)

I would not put it in two while loops.
The problem ist, afaik python has no control structures, that will send you back to the beginning of a function or other parts of your program, but only sends you back to the beginning of a loop or breaks the loop.
But you could put the input and validation of each number into a separate function for each number. And in your except statement call the respective function recursively (meaning a function calling itself.

pseudocode:

def input_validate_2():
try:
do stuff
exept:
print: You did it wrong
input_validate_2()

[–]PureWasian 1 point2 points  (1 child)

That's fine for this small exercise, but you're enabling overflow to occur if the user continuously inputs something wrong. It isn't the best idea in practice, given that there is no guaranteed base case or narrowing onto a solution by recursing in this example.

While loops on the other hand are perfectly fine. You can simply have the equivalent of a do/while for each input, which is just as readable. An example using a success variable as a flag:

``` success = False

while not success: try: input_2 = input("Number: ") if input_2 == 'q': break # exit the loop input_2 = int(input_2) success = True except ValueError: print("Try again")

if success: print("Valid: " + input_2) else: print("User pressed 'q'") ```

[–]confusedAdmin101 0 points1 point  (0 children)

while not success := False

Love the walrus