2013-09-06 3 views
2

Я изучаю python через академию кода. Он попросил меня создать оператор if else, который печатает вход пользователя, но если нет ввода, напечатайте «empty». Я пропустил учебник, но когда есть пользовательский ввод, он печатает как пользователей, так и «пустых».python help! If/else statement

вот мой код:

print "Welcome to the English to Pig Latin translator!" 

original = raw_input("what is your name?") 
length = len("original") 

if length > 0: 
    print original 

else: length < 0 
print "empty" 

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

+0

Потерять состояние после else. –

+3

Это даже не корректно, это будет <= 0. Конечно, есть и другие проблемы с его программой. – Random832

ответ

8

У вас, похоже, есть пара вопросов с вашим кодом.Во-первых, я считаю, вы должны изменить свое назначение в length на:

length = len(original) 

Таким образом, вы получите правильную длину строки вы связанного приложения к имени original. Если вы используете len("original"), вы передадите строку «original» в функцию len(), и она просто посчитает символы этой строки. Независимо от того, что вводит пользователь вашей программы, ваша длина всегда будет 8, так как это количество символов в строке "original"

Также имейте в виду, что функция len() никогда не вернет отрицательное значение. Поэтому тестирование, если length < 0 не имеет смысла. Вероятно, вам захотелось проверить, равен ли он 0. Кажется, вы пытались использовать оператор elif.

Try:

print "Welcome to the English to Pig Latin translator!" 

original = raw_input("what is your name?") 
length = len(original) 

if length > 0: 
    print original 

elif length == 0: 
    print "empty" 

elif заявления позволяют проверить условия, как и if заявления. elif не подходит для «else if».

Кроме того, как отметил в комментариях @chepner, нет необходимости даже проверять второе условие вообще. Вы можете так же легко идти с:

else: 
    print "empty" 

else синтаксис не следует каких-либо условий. Он автоматически вводит отложенный блок кода, если другие условия оцениваются как False.

+0

Если длина не больше нуля и не может быть меньше нуля, единственной оставшейся опцией является 0. Нет необходимости заменять 'else'' elif length == 0'. – chepner

+0

Я знаю, я просто старался как можно ближе придерживаться его первоначальной логики. – Shashank

+0

Спасибо за ваше время, ребята! Теперь работает! –

2
else: length < 0 
print "empty" 

должен быть

elif length == 0: 
    print "empty" 

Python имеет значительные пробелы, вещи, которые отступом то же находятся в той же области.

+1

'length' никогда не будет меньше 0; просто 'else' достаточно. –

1

После этого есть заявление.

else: length < 0 
print "empty" 

Может быть, вы ищете (elif это еще один способ проверить еще одно условие после if если предыдущий if терпит неудачу.)

elif length <= 0: 

или просто обычный

else: 
    print "empty" 

он никогда не пройдет за нулем, так как вы могли бы иметь == условно для нуля, и это сработает.

elif length == 0: 

это, вероятно, лучший способ не проверять другое состояние.

if length > 0: 
    print original 
else: 
    print "empty" 

также просто примечание стороны length = len("original")

там не предполагают, чтобы быть Кавычки оригинала, поскольку его переменная :). Вы просто получите строку «original», а не фактическую информацию внутри переменной.

Конечный результат ..

print "Welcome to the English to Pig Latin translator!" 

original = raw_input("what is your name?") 
length = len(original) 

if length > 0: 
    print original 
else: 
    print "empty" 
4

Был length < 0 предназначен быть комментарий? Вам нужен символ комментария #.

else: # length < 0 
    print "empty" 

В любом случае, это не так, должно быть length <= 0.

Без символа комментария он интерпретировался как инструкция для использования в качестве предложения else. Он не создавал ошибку, так как length < 0 просто генерирует логический результат, с которым вы ничего не делали, но это помешало вам иметь другой оператор как часть else.

1

Прежде всего, это не len("original") это len(original). Если вы используете кавычки, вы делаете его постоянным значением «original», а не переменной с именем original.

Во-вторых, вместо того, чтобы проверять длину строки, вы должны использовать эту

if original: 
    # Type here what happens if the string is not empty 
else: 
    # Here what happens if the string is empty 

в соответствии со стандартом Python любой коллекции, в том числе строк, равно false, если он пуст (иначе не содержит элементов) и true если он содержит любые элементы.

0

Чтобы проверить, есть ли элемент в списке, просто сделать это:

if List_name: 
    {code here} 
    ... 

Таким образом, ваш код должен очень просто выглядеть следующим образом:

print "Welcome to the English to Pig Latin translator!" 
original = raw_input("what is your name?") 
if original: 
    print original 
else: 
    print "Empty" 

Это так просто: D