我做了一个简单的两个单词翻译,但我不知道如何循环它所以再次要求输入一个单词,然后用命令或其他东西打破它。这是代码:
print 'Translate "Dog" and "Water" to German.'
word = raw_input("Word: ")
if word == "Dog":
print "German: Hund"
elif word == "Hello":]
print "German: Hallo"
else:
print 'Type "Dog" or "Hello"'
答案 0 :(得分:3)
while循环怎么样? while循环遍历代码,直到指定的条件为false。 while True
始终为true,因此代码将一直执行,直到您选择退出为止。
print 'Translate "Dog" and "Water" to German.'
while True:
word = raw_input("Word: ")
# conditionals
您可以在评论所在的位置包含上述条件,但也要确保让他们检查退出循环/程序的单词。例如,当用户想要退出时,if word == 'quit': break
将退出循环。
通过'退出'我只是意味着'摆脱循环'。如果您之前没有使用过循环,您可能需要查看下面的链接,因为它描述了比我更好的循环,并且将帮助您理解“突破循环”这个术语的含义。
答案 1 :(得分:2)
有时,正确的数据结构可以简化代码,无需条件逻辑。例如,您可以让Python dict
完成大部分工作。
translations = dict(
dog = 'Hund',
hello = 'Hallo',
)
while True:
eng = raw_input("Word: ")
if not eng:
break
deu = translations.get(eng.lower())
if deu is None:
print 'Unknown word: {}'.format(eng)
else:
print 'German: {}'.format(deu)
答案 2 :(得分:0)
FMc answer很棒,但我想要一些不同的东西,更多的是pythonic:
translations = {"Dog":"Hund", "Hello":"Hallo"}
eng = "sample"
while eng:
eng = input("Word: ")
if not eng in translations:
print("Unknown word")
else:
print (German: translations[eng])
首先,我们使用内置字典;它与FMc使用的相同,但它不那么晦涩。
当'eng'为空(“”)或无时,它被赋予False。然后我们检查这个词是否在dict上。如果不是,我们说这个词是未知的,如果是,我们打印对应的密钥,也称为翻译单词。
您可以轻松将其转换为函数:
def translator(translations, language):
eng = "sample"
while eng:
eng = input("Word: ")
if not eng in translations:
print("Unknown word")
else:
print (language + ": " + translations[eng])
有了它,你只需要传递一本翻译词典和你的语言名称。
例如:
translator({"Dog":"Cachorro","Hello":"Ola"},"Portuguese")
eng =“sample”系列并不是那么漂亮,但它有效;你可以尝试不同的方式,这样你就可以消除这条线,并且仍然在while循环中使用eng。