Почему это логическое значение ложно? - PullRequest
0 голосов
/ 26 октября 2019

Почему Python говорит, что 'e' не найден в strvowel?

Я попытался отформатировать строку как: 'aeiouAEIOU', но это не работает либо

vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
strvowel = "'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U'"

 if w[0] not in vowel:
        PLw = []
        for element in w:
            v = element.find(strvowel)
        PLw.append(w[v:] + '-' + w[0:v] + 'ay')
        return PLw[0]
if __name__ == '__main__':
#     encrypt(w)
#     decrypt(w)
    print(encrypt('yesterday'))
    print(encrypt('"always!"'))
    print(encrypt('computer'))

операторы печати должны быть:

вчера-ура всегда! "-" ay omputer-cay

В настоящее время это:

y-yesterdaay "-" всегда! ay r-computeay

Когда вводится слово (w), оно должно найти первое вхождение гласного: пример. «вчера» будет «е», но он вызывает false для каждого символа (даже гласные)

Ответы [ 3 ]

1 голос
/ 26 октября 2019

Когда w - это слово, подобное «вчера», element - это символ, похожий на «y». Когда вы говорите

v = element.find(strvowel)

, вы спрашиваете, где находится «a», «e», «i», «o», «u», «A», «E», «I», «O», «U». '”В“ y ”(его никогда не может быть).

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

if w[0] not in vowel:

, поэтому удалите strvowel и повторно используйте это:

v = -1  # TODO: think about what happens when there are no vowels

for i, letter in enumerate(w):
    if letter in vowel:
        v = i
        break
1 голос
/ 26 октября 2019

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

vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
w = "yesterday"
def find_first_vowel(string):
    for char in string:
        if char in vowel:
            return char

print(find_first_vowel(w))
0 голосов
/ 26 октября 2019

так вы просто хотите найти первый гласный? это то, для чего нужны регулярные выражения.

#python standard regular expression library
>>>import re

#prepare your vowels. this means "any of those letters"
>>> vowels = re.compile("[aeiouyAEIOUY]")

#find the match. returns a Match Object. often used as a `if vowels.match(string)` too
>>> vowels.match("yesterday")
<re.Match object; span=(0, 1), match='y'>
>>> match = vowels.match("yesterday")
#  look as the object for fun
>>> match
<re.Match object; span=(0, 1), match='y'>

#find the result
>>> match[0]
'y'
# or this way
>>> match.group()
'y'

Итак, чтобы добавить "-ay" к первому найденному гласному, вам нужно просто сделать

def append_yay(string):
    match = vowels.match(str)
    if match:
        return match.group() + "ay"


append_yay("yesterday")

и вы получите -yay.

...