我怎么能循环呢?

时间:2014-01-12 02:40:53

标签: python loops if-statement break

我做了一个简单的两个单词翻译,但我不知道如何循环它所以再次要求输入一个单词,然后用命令或其他东西打破它。这是代码:

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"'

3 个答案:

答案 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将退出循环。

编辑:

通过'退出'我只是意味着'摆脱循环'。如果您之前没有使用过循环,您可能需要查看下面的链接,因为它描述了比我更好的循环,并且将帮助您理解“突破循环”这个术语的含义。

http://www.tutorialspoint.com/python/python_while_loop.htm

答案 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。