словарь перевода на иностранный язык - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь составить словарь на 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 [слово]

Программа должна сопоставить запись пользователя со значением словаря.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Было несколько проблем с вашим кодом.

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')
0 голосов
/ 13 декабря 2018

Вот проблемы, которые я вижу:

  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.).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...