/ / Pig Latin Function Sentence - питон, функция

Функция на латински свине Функция - питон, функция

Правилата за латинските изречения са:

1.За думи, започващи със съгласни, всички букви преди първата гласна са преместени до края на думата, а освен това се добавят от "ay"
2.За думи, които започват с гласни, думата се добавя от "сено"
3.За думи, които не съдържат гласна, първото писмо се премества до края на думата и се добавя с "начин"
4. всички невъглеродни знаци (т.е. числа, символи) се игнорират

Основната част от кода изпълнява инфинитицикъл, който взима низ от потребителя, извиква функцията pigLatin и отпечатва резултата, който се връща. Функцията pigLatin получава списък с думи като свой принос и ги преобразува в латински свински, като използва горните правила. Основната част излиза, когато потребителският вход "Излез от тази програма" като входна изречение за преобразуване. Потвърдете програмата си за всички случаи (включително невалидни входове) и запазете програмата си.

Смятам, че е много трудно да се реши правило 3. Тъй като тествам кода, излизането не е вярно ... Аз се борих за цялата нощ и не можах да спя ... Моля, помогнете Ето моя код:

enter code here

 sentence=input("input:")
VOWELS=["a","e","i","o","u"]
CONSONANTS=["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z"]
def pigLatin():
t=-1
for word in newsentence:

if word[0] in CONSONANTS:
if "a"and"e"and"i"and"o"and"u" not in word[1:]:
print(word[1:]+word[0]+"way",end=" ")
for u in word:
t +=1
if u in VOWELS:
print (word[t:]+word[0:t]+"ay",end=" ")
break
elif word[0] in VOWELS:
print (word[0:]+"hay",end=" ")
else:
print (word[0:])

while sentence!=("Quit the program"):
newsentence=sentence.split()
pigLatin()
sentence=input("input:")

Отговори:

0 за отговор № 1

Както Вилем Ван Онсем каза, този ред не прави това, което мислите:

 if "a"and"e"and"i"and"o"and"u" not in word[1:]:

Трябва да опитате да експериментирате с преводача.

"a" and "e" not in "bar"
# returns True

Това се случва, защото е логичен оператор, който разглежда какво идва преди и след него. Той прави това:

"a" and ("e" not in "bar")

който оценява

"a" and True

който се оценява на True, защото не-празните струни получават присвоена Boolean True.

Ето нещо, което ще работи. Той използва цялата функция, която връща само True, ако всички негови елементи са верни, и функция на Python, наречена разбиране, което ви позволява да правите спретнати вериги:

vowels = "aeiou"

all(char not in vowels for char in word)