首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外文翻译词典

外文翻译词典
EN

Stack Overflow用户
提问于 2018-12-13 02:47:49
回答 2查看 55关注 0票数 0

我正在设法编纂一本关于Python的字典,里面有我学过的生词。然后程序将测试我的知识,通过要求我翻译字典中的随机键。

以下是我目前所拥有的:

代码语言:javascript
复制
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')

对格式和缩进表示歉意,但是对于堆栈溢出和仍然在学习技巧来说,这是一个新的问题!

我想问题就在这个问题上:如果猜到了,== witcher_dicword

程序应该将用户条目与字典值匹配。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-13 03:41:36

您的代码有一些问题。

1.)要使用非ascii字符,需要使用“魔术”注释声明编码。

2. ranWord只在自己的作用域中定义word,因此不能在函数之外使用它。我建议学习范围

3. input(print(str))是无效的语法。使用input(str)

4.)这并不是一个真正的问题,但您永远不会退出while循环,因此您将永远翻译单词。你可以决定如何处理这个问题

代码语言:javascript
复制
#!/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')
票数 0
EN

Stack Overflow用户

发布于 2018-12-13 03:30:29

以下是我能看到的问题:

  1. 对ranWord的调用结果不会保存在任何地方。稍后使用word,但不会定义它。你应该做word = ranWord(),然后做一些类似guess = input(f'Please enter the translation for {word}: ')的事情。
  2. 如果玩家猜对了,循环就会继续。添加break语句以在打印Well done!后终止循环。
  3. Please try again行似乎没有必要;当循环重新启动时,它将提示播放器进行新的猜测。删除else,或者用print(Your guess was incorrect.)替换第二个input调用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53754348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档