2016-01-27 5 views
0

Я действительно новичок в Python, и я в основном просто возился. Я пытаюсь собрать функцию, которая проверяет ввод пользователя (в моем случае, чтобы проверить, может ли пользователь записывать либо Джеймса, либо Питера. Это, наверное, очень новичок вопрос, но мне просто интересно, хороший ли мой код чтобы выполнить эту функцию Спасибо за любую помощьПроверка ввода с помощью функции в Python

namelist = "Peter", "James" 

def nameinput(): 
    global name 
    name = raw_input("Write a name. ") 

def checkname(x): 
    while name not in namelist: 
     print "Try again" 
     nameinput() 
    else: 
     print "Good,", name 

checkname(nameinput()) 

if name == "Peter": 
    print "This is a text for Peter" 
elif name == "James": 
    print "This is a text for James" 
+0

Некоторые незначительные комментарии, вы подумали о случаях. Кроме того, чтобы не было необходимости вводить имя в конструкцию if, вы можете рассмотреть возможность циклического перебора элементов и распечатать элемент, если он соответствует вводу. –

ответ

1

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

def nameinput(): 
    return raw_input("Write a name. ") 

def checkname(name): 
    namelist = ["Peter", "James"] 
    while name not in namelist: 
     print "Try again" 
     name = nameinput() 
    else: 
     print "Good,", name 
    return name 

name = checkname(nameinput()) 
+1

Не является ли «намелый» глобальным? – AChampion

+0

Да, но это менее опасно, потому что оно не изменяется. –

+0

Согласен, у меня также возникнет соблазн просто передать функцию ввода, а не сделать вызов. Вызов 'nameinput()' в 2 разных частях является нехорошим. – AChampion

0

Использование глобальных переменных.. (на самом деле это может быть глупо, если вы не всегда знаете, что делаете), поэтому не начинайте делать так, чтобы рано.

Вы можете легко избежать этого, вернув имя из nameinput.

Кроме того, у вас уже есть список имен. В конце концов:

if name in namelist: 
    print("This is a text for " + name) 
Смежные вопросы