Is there any way to shorten it?

Question:

n = [1,2,3,4,5,6]
while True:
    num  = (input("enter your choice(from 1 to 6) "))
    if num not in str(n) or num.isdigit == "False":
        print("enter valid chice ")
        os.system('cls')
        pr()
    else:
        break

I want it to loop if the input is string and not in n

Asked By: az0x

||

Answers:

Your code is convoluted, here’s a simpler version:

# use try/except to get an int, or set our var outside the bounds in the while loop
try:
    num = int(input("Enter your number (1-6):"))
except ValueError:
    num = 0
# while our input isn't in the 1-6 range, ask for a number
while num not in [1,2,3,4,5,6]:
    # same as before, if this is not a number, just set it to something that's not in [1-6] so we stay in the while loop
    try:
        num = int(input("Enter a valid choice please (1-6):"))
    except ValueError:
        num = 0
# your code here
Answered By: sodimel
n = [1,2,3,4,5,6]
while True:
    num = input("enter your choice(from 1 to 6) ")
    if not num.isdigit() or int(num) not in n:
        print("enter a valid choice ")
    else:
        break

The issue in the original code was checking isdigit as a string instead of calling the method on num. Also, the condition to check if num is not in n was incorrect. The corrected code checks if num is not a digit and also checks if the integer form of num is not in n.

Answered By: Rasathurai Karan
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.