2015-06-10 8 views
-1

Я пытаюсь создать программу, которая запрашивает имя, но будет отклонять ввод, если он не содержит букв/пробелов. Однако он, кажется, отклоняет пробелы, а также числа и символы.Проверка, содержит ли переменная пробелы и буквы

print("Welcome to the Basic Arthmetics Quiz.") 
print("What is your name?") 
name=input() 
if not name.isalpha()or name not in(str(" ")): 
    print('Please only enter letters for your name!') 
    while not name.isalpha()or name in(str(" ")): 
     v=1 
     print('Please enter your name again.') 
     name=input() 
     if name.isalpha()or name not in(str(" ")): 
      v=0 
     else: 
      v=1 

Где я пошла не так?

+0

Что вы ожидаете от имени не в (str ("")) 'делать, точно ?! – jonrsharpe

+0

Ваш код содержит некоторое серьезное дублирование. –

+0

Я хочу, чтобы он проверял, есть ли какие-либо пробелы в имени переменной, а значит, и "". Однако я не уверен, что если вы это сделаете правильно. –

ответ

0

Это выглядит очень много, как домашнее задание.

Ваш тест name not in(str(" ")), который должен быть написан name not in " ", проверяет, является ли имя одним из {"", " "}.

Было бы проще всего проверить от имени один символ за один раз, с условием каждого полукокса как

char.isalpha() or char == ' ' 

Объедините это с и выражения генератора all, чтобы проверить все символы из name.

Фактическая реализация, а также правильный поток кода (вы не используете v, вы выполняете тест трижды и дважды вызываете input()), которые являются неприемлемыми) остаются в качестве упражнения.

Смежные вопросы