外语翻译词典

时间:2018-12-13 02:47:49

标签: python dictionary translation

我正在尝试使用我学到的新单词在Python上编译字典。然后,程序将要求我翻译字典中的随机键,从而测试我对单词的了解。

这是我目前的状态:

import random

witcher_dic =  {'bridles' : 'уздцы'  , 'hum' : 'гул' , 'to become deserted' : 'опустеть', 'linen' : 'полотяный' , 'apron' : 'фартук' ,
               'pockmarked (object)' : 'щербатый' , 'quiver (arrow)' : 'колчан' , 'to take a sip' : 'обхлебнуть' ,
               'to grunt' : 'буркнуть' , 'vile/foul' : 'паскудный' , 'pockmarked (person)' : 'рябой' , 'big-man' : 'верзила' ,
               'punk' : 'шпана' , 'to bark (person)' : 'гархнуть' , 'bastard, premature child' : 'недосонок' ,
               'to mumble' : 'промямлить' , 'to bark (person2)' : 'рявкнуть' , 'to look around oneself' : 'озираться' ,
               'oliquely' : 'наискось' , 'a mess/fuss' : 'кутерьма' , 'bolt (sound)' : 'грохот' , 'to blink' : 'шмяхнуться' ,
               'dissected' : 'рассеченный' , 'to wriggle' : 'извиваться', 'tender/sensitive' : 'чуткий' , 'to hang to' : 'облепить',
               'a clang/clash' : 'лязг' , 'to snuggle up to' : 'прильнуть' , 'boot-leg' : 'голенищ' , 'stuffing' : 'набивки' ,
               'cuffs' : 'манжеты' , 'to jump up' : 'вскочить' , 'to dart off' : 'помчаться' , 'to scream' : 'заволить' , 'shrilly' : 'пронзительно',
               'to back away' : 'пятиться' , 'loaded (horse)' : 'навьюченный'}


def ranWord():
    word = random.choice(list(witcher_dic.keys()))
    return word

while True:

    print(ranWord())
    guess = input('Please enter the translation for this word: ')
    if guess == witcher_dic[word]:
        print('Well done!')
    else:
        input(print('Please try again: '))

input('Press any key to exit')

关于格式和缩进的道歉,但是对于stackoverflow还是很新的,仍然在学习中!

我想问题就在网上:如果猜测== witcher_dic [word]

程序应使用户输入与字典值匹配。

2 个答案:

答案 0 :(得分:0)

这是我可以看到的问题:

  1. 调用ranWord的结果不会保存在任何地方。稍后再使用word,但不会定义它。您应该先做word = ranWord(),然后再做类似guess = input(f'Please enter the translation for {word}: ')的事情。
  2. 如果玩家猜对了,循环将继续进行。添加break语句以在打印Well done!之后终止循环。
  3. Please try again行似乎不必要;当循环重新开始时,它将提示玩家进行新的猜测。删除else,或用input替换第二个print(Your guess was incorrect.)呼叫。

答案 1 :(得分:0)

您的代码有一些问题。

1。)要使用非ascii字符,您需要使用“魔术”注释声明编码
2.)ranWord仅在其自己的范围内定义word,因此您不能在函数外部使用它。我建议您学习范围
3.)input(print(str))是无效的语法。使用input(str)
4.)这并不是真正的问题,但是您永远不会退出while循环,因此您将永远翻译单词。您可以决定要如何处理

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#include these!^

import random

witcher_dic =  {'bridles' : 'уздцы'  , 'hum' : 'гул' , 'to become deserted' : 'опустеть', 'linen' : 'полотяный' , 'apron' : 'фартук' ,
               'pockmarked (object)' : 'щербатый' , 'quiver (arrow)' : 'колчан' , 'to take a sip' : 'обхлебнуть' ,
               'to grunt' : 'буркнуть' , 'vile/foul' : 'паскудный' , 'pockmarked (person)' : 'рябой' , 'big-man' : 'верзила' ,
               'punk' : 'шпана' , 'to bark (person)' : 'гархнуть' , 'bastard, premature child' : 'недосонок' ,
               'to mumble' : 'промямлить' , 'to bark (person2)' : 'рявкнуть' , 'to look around oneself' : 'озираться' ,
               'oliquely' : 'наискось' , 'a mess/fuss' : 'кутерьма' , 'bolt (sound)' : 'грохот' , 'to blink' : 'шмяхнуться' ,
               'dissected' : 'рассеченный' , 'to wriggle' : 'извиваться', 'tender/sensitive' : 'чуткий' , 'to hang to' : 'облепить',
               'a clang/clash' : 'лязг' , 'to snuggle up to' : 'прильнуть' , 'boot-leg' : 'голенищ' , 'stuffing' : 'набивки' ,
               'cuffs' : 'манжеты' , 'to jump up' : 'вскочить' , 'to dart off' : 'помчаться' , 'to scream' : 'заволить' , 'shrilly' : 'пронзительно',
               'to back away' : 'пятиться' , 'loaded (horse)' : 'навьюченный'}


def ranWord():
    word = random.choice(list(witcher_dic.keys()))
    return word

while True:
    wrd = ranWord()
    print(wrd)
    guess = input('Please enter the translation for this word: ')
    if guess == witcher_dic[wrd]:
        print('Well done!') # maybe break here after a certain amount correct?
    else:
        input('Please try again: ') #or instead of trying again you can just lose when you answer incorrectly

input('Press any key to exit')