法语国家的名字是女性化的,当它们以字母E结尾,否则是男性。有6个例外。(伯利兹,cambodge,mexique,莫桑比克,扎伊尔,津巴布韦)我要编写一个程序,接受输入并添加le,或取决于它是男性化还是女性化。
此外,如果国家名称以元音开头,则需要打印l'而不是le或la。
还有一个条件。如果输入是这两个复数国家之一,那就是打印前面的那些。(etats-unis,pays-bas)
这是我目前的代码
vowels=("aeiouAEIOU")
word=input("Enter a french country :")
if word==("belize")or("cambodge")or("mexique")or("mozambique")or("zaire")or("zimbabe"):
print("le",word)
elif word==("etats-unis")or("pays-bays"):
print("les",word)
elif word.endswith("e"):
print("le",word)
else:
print("la",word)
if word.startswith(vowels):
print("l'",word)
我遇到的问题是无论我使用什么输入它总是打印le infront。 例如:输入加拿大;输出加拿大。
为什么不测试其他条件?
答案 0 :(得分:2)
这是因为:
if word == "A" or "B":
与
不同if word == "A" or word == "B":
第一个评估(是单词==“A”)logical_or(“B”)
所以第一个版本总是评估为true。这是一个例子:
>>> X = "asdf"
>>> if(X):
... print("hurray")
...
hurray
>>>
答案 1 :(得分:1)
试一试
exceptions = set("belize cambodge mexique mozambique zaire zimbabwe".split())
vowels = set('aeiou')
plurals = set("etats-unis pays-bas".split())
word, sentinel = "", "quit"
while word != sentinel:
word = input("Enter the name of a country: ")
if word == sentinel:
continue
male = word in exceptions or word[-1].lower() not in vowels
plurality = word in plurals
apo = word[0].lower() in vowels
if apo:
print("l'%s" %word)
elif plurality:
print("les", word)
else:
print("le" if male else "la", word)
答案 2 :(得分:0)
使用:
if word in ["belize", "cambodge", "mexique", "mozambique", "zaire", "zimbabe"]:
print("le",word)
这里的问题是word==("belize")or("cambodge")or("mexique")
没有按照你的想法行事。关于这个问题有很多解释,但为了让它发挥作用,你要么需要做我上面的事情或类似的东西:
if word=="belize" or word=="cambodge" or word=="mexique": # etc