/ / Cerdo Función latina oración - python, función

Función de cerdo en latín - python, function

Las reglas para las oraciones latinas de cerdo son:

1. Para las palabras que comienzan con consonantes, todas las letras antes de la primera vocal se mueven al final de la palabra y se agregan con "ay".
2.para palabras que comienzan con vocales, la palabra se agrega con "heno"
3.para palabras que no contienen una vocal, la primera letra se mueve al final de la palabra y se anexa con "forma"
4. Se ignoran todos los caracteres que no son (es decir, números, símbolos)

La parte principal del código ejecuta un infinitobucle que toma una entrada de cadena del usuario, invoca la función pigLatin e imprime el resultado devuelto. La función pigLatin recibe una lista de palabras como entrada y las convierte a pig latin usando las reglas anteriores. La parte principal se cierra cuando el usuario ingresa "Salir de este programa" como la oración de entrada para la conversión. Verifique su programa para todos los casos (incluidas las entradas no válidas) y guarde su programa.

Me resulta muy difícil resolver la regla 3. Mientras pruebo el código, la salida no es correcta ... Lucho durante toda la noche y no pude dormir ... Por favor, ayuda Aquí está mi código:

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:")

Respuestas

0 para la respuesta № 1

Como dijo Willem Van Onsem, esta línea no hace lo que piensas:

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

Debes intentar experimentar con el intérprete.

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

Esto está sucediendo porque es un operador lógico que analiza lo que viene antes y después. Está haciendo esto:

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

que evalúa a

"a" and True

que se evalúa como True, porque a las cadenas no vacías se les asigna el True booleano.

Aquí hay algo que funcionará. Utiliza la función all, que solo devuelve True si todos sus elementos son verdaderos, y una característica de Python llamada comprensión que le permite hacer bucles ordenados:

vowels = "aeiou"

all(char not in vowels for char in word)