2013-09-13 5 views
1

Я размышляю, могу ли я преобразовать эту строку кода в список для всех этих гласных;Python Codeacademy: Создание списка со строкой

if first== 'a' or first =='e' or first == 'i' or first == 'o' or first =='u':" 

Я думаю str[a,e,i,o,u]

pyg = 'ay' 
first = original[0] 
original = raw_input('Enter a word:') 

if len(original) > 0 and original.isalpha(): 
    print original.lower() 
    if first== 'a' or first =='e' or first == 'i' or first == 'o' or first =='u': 
     print "vowel" 
    else: 
     print "consonant" 
else: 
    print 'empty' 


word = original 
+3

вы, вероятно, следует переместить 'первый = оригинал [0]' * после * 'оригинал = raw_input ('Введите слово:')' – DaoWen

ответ

0

Вы можете использовать строку вместо списка:

if first in "aeiou": 
    print "vowel" 
else: 
    print "consonant" 

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

if first.lower() in "aeiou": 
+0

Ницца наблюдение ... Интересно, почему это так. –

+1

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

0

В Python типы str во многом похожи на типы списков. Один из этих способов заключается в том, что простое и сжатое ключевое слово in прекрасно подходит для тестирования членства в обоих.

pyg = 'ay' 
first = original[0] 
original = raw_input('Enter a word:') 

if len(original) > 0 and original.isalpha(): 
    print original.lower() 
    if first in 'aeiou': 
     print "vowel" 
    else: 
     print "consonant" 
else: 
    print 'empty' 


word = original 
+0

Спасибо за советы. –

1
if first.lower() in ['a','e','i','o','u']: 
    print "vowel" 
else: 
    print "consonant" 

Я думаю, что слово, которое вы ищете (Beuller) является Boolean?

0

У вас есть несколько проблем здесь:

first = original[0] 
original = raw_input('Enter a word:') 

Вы пытаетесь получить доступ к original прежде, чем это определено, что это легко исправить, как говорится в комментарии (+1 DaoWen), просто поменять местами те, две линии.

Однако, то проверьте, чтобы убедиться, что что-то было введено:

if len(original) > 0 

Но тогда, если оригинал не проходит это заявление, он бросил ошибку с first = original[0], так что может быть лучше повременить назначая first, пока вы не в if блоке:

original = raw_input('Enter a word:') 

if len(original) > 0 and original.isalpha(): 
    print original.lower() 
    first = original[0].lower() 
    if first in ['a','e','i','o','u']: print "vowel" 
    else: print "consonant" 
else: 
    print 'empty' 

word = original 
Смежные вопросы