Как принять только те входные данные, которые состоят из трех цифр? - PullRequest
0 голосов
/ 23 октября 2019
UserNumber = 0

UserNumber = int(raw_input("Enter a 3 digit number: "))

if UserNumber >= 100 and UserNumber <= 999:

    print "My name is: xxxxx xxxxx"
    print "My UBIT name is: xxxxxxx"
    print "The number you entered was", UserNumber, "."

Как сделать так, чтобы программа запускалась только при вводе трехзначного числа (т. Е. Числа> 99 и числа <1000? Я знаю, что это должен быть какой-то цикл while, но я не знаю, какреализовать его. </p>

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Вы можете использовать регулярное выражение, чтобы проверить, является ли число 3-мя цифрами, и просто спросить пользователя, не соответствует ли оно регулярному выражению

import re

UserNumber = int(raw_input("Enter a 3 digit number: "))

while not(re.search("^\d{3}$", str(UserNumber))):
    UserNumber = int(raw_input("that  was not a 3 digit number, Enter a 3 digit number: "))

if UserNumber >= 100 and UserNumber <= 999:

    print "My name is: xxxxx xxxxx"
    print "My UBIT name is: xxxxxxx"
    print "The number you entered was", UserNumber, "."

0 голосов
/ 23 октября 2019

Ввод является строкой, поэтому вы можете len(input) перед приведением к целому числу.

Проверка того, что каждый символ является цифрой, может быть выполнена с помощью and input.isdigit.

* 1006. *

Но подумайте, 007 также является действительным трехзначным числом. Поэтому, если вы хотите, чтобы он был больше, чем 99, вам также нужна эта проверка.


Для вашего «обновления», что вы хотите «сохранить-сбой», чтобы кто-то был вынужден сделать3-значный ввод:

UserNumber = 0

input = ""
while not (len(input) == 3 and input.isdigit()):
    input = raw_input("Enter a 3 digit number: ")

UserNumber = int(input)
print "My name is: xxxxx xxxxx"
print "My UBIT name is: xxxxxxx"
print "The number you entered was %03d." % UserNumber

Пока кто-либо не вводит 3 цифры, появится вопрос для этого ввода.

...