перерыл инет и всё равно не понял как это исправить [Python]
Нет, загуглить не легче. Я пытался и ничего не понял. Я не прошу сделать за меня, как это любят тут говорить, я лишь хочу понять что не так(и да, я в состоянии перевести ошибку, я просто не в силах её исправить). Надеюсь на вашу доброту и понимание
выдает вот такую ошибку:
Traceback (most recent call last):
File "C:/hangman2.py", line 114, in <module>
secretWord, secretSet = getRandomWord(words)
TypeError: cannot unpack non-iterable NoneType object
ссылка на код https://pastebin.com/P8zVNK2a
import random
HANGMAN_PICS = ['''
+---+
|
|
|
===''', '''
+---+
|
|
|
=== ''', '''
+---+
0 |
| |
|
===''','''
+---+
0 |
/| |
|
===''','''
+---+
0 |
/|\ |
|
===''','''
+---+
0 |
/|\ |
/ |''','''
+---+
0 |
/|\ |
/ \ |
===''','''
+---+
[0] |
/|\ |
/ \ |
===''','''
+---+
[0] |
/|\ |
/ \ |
===''']
words = {'Цвета':'красный оранжевый желтый зеленый синий голубой фиолетовый белый черный коричневый'.split(),
'Фигуры':'квадрат треугольник прямоугольник круг эллипс ромб трапеция параллелограмм пятиугольник шестиугольник восьмиугольник'.split(),
'Фрукты':'яблоко апельсин лимон лайм груша мандарин виноград грейпфрут персик банан абрикос манго нектарин'.split(),
'Животные':'аист бабуин баран барсук бык волк зебра кит коза корова кошка кролик крыса лев лиса лось медведь мул мышь норка носорог обезьяна овца олень осел панда пума скунс собака сова тигр тюлень хорек ящерица'.split()}
def getRandomWord(wordDict):
# Эта функция возвращает случайную строку из переданного списка.
wordKey = random.choice(list(wordDict.keys()))
wordIndex = random.randint(0, len(wordDict[wordKey]) -1)
def displayBoard(missedLetters, correctLetters, secretWord):
print(HANGMAN_PICS[len(missedLetters)])
print()
print('Ошибочные буквы:', end=' ')
for letter in missedLetters:
print(letter, end=' ')
print()
blanks = '_' * len(secretWord)
for i in range(len(secretWord)): # заменяет пропуски отгадаными буквами
if secretWord[i] in correctLetters:
blanks = blanks[:i] + secretWord[i] + blanks[i+1:]
for letter in blanks: # показывает секретное слово с пробелами внизу
print(letter, end=' ')
print()
def getGuess(alreadyGuessed):
# Возвращает букву, введенную игроком. Эта функция проверяет, что игрок ввел только одну букву и ничего больше.
while True:
print('Введите букву.')
guess = input()
guess = guess.lower()
if len(guess) != 1:
print('Пожалуйста, введите одну букву.')
elif guess in alreadyGuessed:
print('Вы уже называли эту букву. Назовите другую.')
elif guess not in 'абвгдеежзийклмнопрстуфхцчшщъыьэюя':
print('Пожалуйста, введите БУКВУ.')
else:
return guess
def playAgain():
# Эта функция возвращает значение True, если игрок хочет сыграть заново; в противном случае возвращает Faulse.
print('Хотите сыграть ещё? (да или нет)')
return input().lower().startswith('д')
print('В И С Е Л Н И Ц А')
difficulty = ''
while difficulty not in 'ЛСТ':
print('Выберите уровень сложности: Л - Легкий, С - Средний, Т - тяжелый')
difficulty = input().upper()
if difficulty == 'С':
del HANGMAN_PICS [8]
del HANGMAN_PICS [7]
if difficulty == 'Т':
del HANGMAN_PICS [6]
del HANGMAN_PICS [5]
del HANGMAN_PICS [4]
del HANGMAN_PICS [3]
missedLetters = ''
correctLetters = ''
secretWord, secretSet = getRandomWord(words)
gameIsDone = False
while True:
print('Секретное слово из набора: ' + secretSet)
displayBoard(missedLetters, correctLetters, secretWord)
# Позволяет игроку ввести буквую.
guess = getGuess(missedLetters + correctLetters)
if guess in secretWord:
correctLetters = correctLetters + guess
# Проверяет выиграл ли игрок.
foundAllLetters = True
for i in range(len(secretWord)):
if secretWord[i] not in correctLetters:
foundAllLetters = False
break
if foundAllLetters:
print('ДА! Секретное слово - "' + secretWord + '"! Вы угадали!')
gameIsDone = True
else:
missedLetters = missedLetters + guess
# Проверяет, превысил ли игрок лимит попыток и проиграл.
if len(missedLetters) == len(HANGMAN_PICS) - 1:
displayBoard(missedLetters, correctLetters, secretWord)
gameIsDone = True
# Запрашивает, хочет ли игрок сыграть заново (только если игра завершена).
if gameIsDone:
if playAgain():
missedLetters = ''
correctLetters = ''
gameIsDone = False
secretWord, secretSet = getRandomWord(words)
else:
break
Ответы (1 шт):
Автор решения: diak2707
→ Ссылка
Ты мой брат по несчастью, столкнулся ровно с тем же, думал 2 вечера. Книга из которой ты взял эту прогу то ли переведена криво, толи еще что. Короче, не хватает строчки с кодом в функции getRandomWord. Вот как должно быть.
def getRandomWord(wordDict):
wordKey = random.choice(list(wordDict.keys()))
wordIndex = random.randint(0, len(wordDict[wordKey]) - 1)
return [wordDict[wordKey][wordIndex], wordKey]