Ограничить ввод целочисленных значений пользователем до 8 цифр - PullRequest
0 голосов
/ 20 января 2012

У меня есть маленькая программа проверки кредитных карт, в которой пользователь должен ввести 8-значное целое число. Программа работает нормально, моя единственная проблема - ограничить ввод пользователя только 8 цифрами.

prompt = "Please, enter the 8 digit number of your card: "

while True: 
    try:
        userinput = int(raw_input(prompt))
    except ValueError: 
        print('The gematric value must be an 8 digit integer. Try again')
    else:
        break 

userinput = str(userinput)

a = int(userinput[7])+int(userinput[5])+int(userinput[3])+int(userinput[1])
b1 = str(int(userinput[6])*20)
b2 = str(int(userinput[4])*20)
b3 = str(int(userinput[2])*20)
b4 = str(int(userinput[0])*20)
y = int(b1[0])+int(b1[1])+int(b2[0])+int(b2[1])+int(b3[0])+int(b3[1])+int(b4[0])+int(b4[1])

x = (a+y)

if x % 10 == 0:
   print('The card number you entered is valid!')
else:
   print('The card number you entered is invalid!')

Я знаю, что len () не работает с целыми числами. Итак, как бы мне включить этот 8-значный предел в свой цикл while true?

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 20 января 2012

Попробуйте следующее.

try:
    userinput = raw_input(prompt)
    if len(userinput ) > 8:
        raise ValueError()
    userinput = int(userinput)
except ValueError:
...
...