Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写一个Python程序,请求一个单词(小写字母)作为输入,并将该单词翻译成拉丁语_Python_Python 3.x_Logical Operators - Fatal编程技术网

编写一个Python程序,请求一个单词(小写字母)作为输入,并将该单词翻译成拉丁语

编写一个Python程序,请求一个单词(小写字母)作为输入,并将该单词翻译成拉丁语,python,python-3.x,logical-operators,Python,Python 3.x,Logical Operators,我需要编写一个Python程序,请求一个单词(小写字母)作为输入,并将该单词翻译成拉丁语。 •将单词翻译成拉丁语的规则如下: a) 如果单词以元音开头,请在单词末尾加上way。例如,else成为Elsway。 b) 如果单词以一组辅音开始,请将它们移到单词的末尾并添加ay。例如,芯片变成了一种新的芯片 我当前的编码: word = input("Enter word to translate: ") #if the 1st letter of a word is "aeiou", add "wa

我需要编写一个Python程序,请求一个单词(小写字母)作为输入,并将该单词翻译成拉丁语。 •将单词翻译成拉丁语的规则如下: a) 如果单词以元音开头,请在单词末尾加上way。例如,else成为Elsway。 b) 如果单词以一组辅音开始,请将它们移到单词的末尾并添加ay。例如,芯片变成了一种新的芯片

我当前的编码:

word = input("Enter word to translate: ")
#if the 1st letter of a word is "aeiou", add "way" to the end of the word 
if word[0] == "a" or "e" or "i" or "o" or "u":  
    print(word + "way")
elif word[0] and word[1] == "b" or "c" or "d" or "f" or "g" or "h" or "j" or "k" or "l" or "m" or "n" or "p" or "q" or "r" or "s" or "t" or "v" or "x" or "y" or "z":
    print(word + "ay")
似乎我当前的编码有一些问题,因为它只显示单词,在单词末尾添加“方式”,而不管单词的第一个字母是元音还是辅音。此外,如果单词中的第一个字母是一组辅音,我不知道如何将其移动到单词的末尾,也不知道如何处理单词中的第一个字母和第二个字母是否构成“zh”、“ch”等辅音

此Python程序的预期结果: 输入要翻译的单词:else Pig拉丁语中的单词是elsway。 输入要翻译的单词:chip
Pig拉丁语中的单词是ipchay。

Python解释
语句的方式与您的思考方式不同

if word[0] == "a" or "e"
我想你认为这是:

if word[0] == ("a" or "e")
但事实上,它是作为

if (word[0] == "a") or ("e"): 
因此,不管[0]实际包含什么单词,因为Python总是将“e”(或任何非空字符串)计算为True,所以它总是添加“way”

重写
的最简单方法是

if word[0] in "aeiou":

这实际上会检查它是否是元音,检查它是否出现在字符串“aeiou”中。

'or'的工作方式与您认为的不一样。它看左边的是不是真的,如果不是,然后“或”看右边的是不是真的。如果其中任何一个为真,则“或”返回真,否则返回假。在您的代码中,一个字母被转换为布尔值,这总是为True。因此,在“或”的右边,总是有“真”的,这意味着你的第一个“如果”总是有效的。

这可能不是最具python风格的答案,但是

当您使用elif时:您正在添加到第一个语句中,这就是为什么它总是在末尾添加方式

使用elif处理每个元音,然后使用else语句处理辅音:

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']
word = input("Enter word to translate: ")
#if the 1st letter of a word is "aeiou", add "way" to the end of the word 
if word[0] in vowels:
    print(word + "way")

elif word[0] and word[1] in consonants:  
    print(word[2:] + word[0:2] + "ay") 

else:
    print(word[1:] + word[0] + 'ay')

上一个示例程序:我的初始答案没有同时考虑两个辅音,这段代码考虑了。我还在想…如果需要考虑三个辅音(christopher),请添加另一个elif语句。elif单词[0:3]的辅音:print(单词[3::][word[0:3]+“ay”)我已经尝试了您的改进代码,但不幸的是,它仍然没有同时考虑两个辅音。例如,我输入“chip”,它仍然显示错误的输出(hipcay),而不是ipchay。此外,如果指令明确使用小写,那么您的第一个if语句应该是关于某人输入的大写字母,返回:所有字母都需要小写我不知道为什么,因为我只是复制了您的代码,但它仍然显示“hipcay”而不是ipchay。你以前运行过代码吗?