-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhangman_russian.py
159 lines (144 loc) · 5.47 KB
/
hangman_russian.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# You can experiment here, it won’t be checked
# You can experiment here, it won’t be checked
import random
words_list = ["человек", "слово", "лицо", "дверь", "земля",
"работа", "ребенок", "история", "женщина", "развитие",
"власть", "правительство", "начальник", "спектакль",
"автомобиль", "экономика", "литература", "граница",
"магазин", "председатель", "сотрудник", "республика",
"личность"]
def get_word():
return random.choice(words_list).upper()
def display_hangman(tries):
stages = [ # финальное состояние: голова, торс, обе руки, обе ноги
'''
--------
| |
| O
| \\|/
| |
| / \\
-
''',
# голова, торс, обе руки, одна нога
'''
--------
| |
| O
| \\|/
| |
| /
-
''',
# голова, торс, обе руки
'''
--------
| |
| O
| \\|/
| |
|
-
''',
# голова, торс и одна рука
'''
--------
| |
| O
| \\|
| |
|
-
''',
# голова и торс
'''
--------
| |
| O
| |
| |
|
-
''',
# голова
'''
--------
| |
| O
|
|
|
-
''',
# начальное состояние
'''
--------
| |
|
|
|
|
-
'''
]
return stages[tries]
def print_w(text, list_chars):
for char in text:
if char in list_chars:
print(char, end='')
else:
print('_', end='')
print()
def play(word):
# тело функции
word_completion = '_' * len(word) # строка, содержащая символы _ на каждую букву задуманного слова
guessed = False # сигнальная метка
guessed_letters = [] # список уже названных букв
guessed_words = [] # список уже названных слов
tries = 6 # количество попыток
print('Давайте играть в угадайку слов!')
print(display_hangman(tries))
print(word_completion)
while True:
user_input = input('Введите букву или слово целиком: ').upper()
if not user_input.isalpha():
print('Ошибка! Попробуйте еще...')
continue
if user_input in guessed_letters or user_input in guessed_words:
print('Уже было. Попробуйте другой вариант')
continue
if len(user_input) > 1:
if user_input == word:
print('Поздравляем, вы угадали слово! Вы победили!')
print(word)
break
else:
guessed_words.append(user_input)
tries -= 1
print(f'Увы, это не то слово. Осталось попыток: {tries}')
print(display_hangman(tries))
print_w(word, guessed_letters)
elif user_input in word:
guessed_letters.append(user_input)
print(f'Поздравляем! Вы угадали букву {user_input}')
for char in word:
if char not in guessed_letters:
print_w(word, guessed_letters)
guessed = False
break
guessed = True
if guessed:
print('Поздравляем, вы угадали слово! Вы победили')
print(word)
break
else:
guessed_letters.append(user_input)
tries -= 1
print(f'Увы, этой буквы {user_input} нет в секретном слове.'
f'Осталось попыток: {tries}')
print(display_hangman(tries))
print_w(word, guessed_letters)
if tries == 0:
print(f'Увы, попытки кончились. Загаданное слово: {word}')
break
play(get_word().upper())