Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 1

Игра "Отгадай число", GUI

05.07.2018, 05:16. Показов 5591. Ответов 0

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я новичок не кидайте на меня камни пожалуйста
Изучаю Питон по учебнику Майкла Доусона.
В 10-ой главе есть задача, где нужно написать программу “Отгадай число”, но с GUI.
Код приведенный ниже написал сам. При нажатии кнопки, программа зависает и все
Никак не пойму в чем проблема
Помогите пожалуйста, буду премного благодарен.


Python
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
# Guess My Number
#
# The computer picks a random number between 1 and 100
# The player tries to guess it and the computer lets
# the player know if the guess is too high, too low
# or right on the money
 
 
import random
from tkinter import *
 
class Application(Frame):
    """ GUI application that play with you a game called 'Guess my number'. """
    def __init__(self, master):
        """ Initialize Frame. """
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
 
    def create_widgets(self):
        """ Create widgets to play. """
        # create insturction label
        Label(self,
              text = "Guess that number, maaan!! @_@"
              ).grid(row = 0, column = 0, columnspan = 2, sticky = W)
 
        # create a label and asking number, also entry for that number
        Label(self,
              text = "Type a number"
              ).grid(row = 1, column = 0, sticky = W)
 
        self.number_ent = Entry(self)
        self.number_ent.grid(row = 1, column = 1, sticky = W)
 
        
        # create a submit button
        Button(self,
               text = "Take a guess...",
               command = self.guess
               ).grid(row = 2, column = 0, sticky = W)
 
        self.answer = Text(self, width = 75, height = 10, wrap = WORD)
        self.answer.grid(row = 3, column = 0, columnspan = 4)
 
 
 
    def guess(self):
        # set the initial values
        the_number = random.randint(1, 100)
        guess_num = self.number_ent.get()
        tries = 1
 
        while guess_num != the_number:
            # if guess is not the number the text will changed
            if int(guess_num) > the_number:
                self.answer.delete(0.0, END)
                self.answer.insert(0.0, "Lower...")
            else:
                self.answer.delete(0.0, END)
                self.answer.insert(0.0, "Higher...")
                guess_num = self.number_ent.get()
                tries += 1
 
        if int(guess_num) == the_number:
            xxx = ("You guessed it! The number was", the_number, ".", "And it only took you", tries, "tries\n")
            self.answer.delete(0.0, END)
            self.answer.insert(0.0, xxx)
        else:
            xxx = ("Game Over! ")
            self.answer.delete(0.0, END)
            self.answer.insert(0.0, xxx)
 
        
 
 
 
 
 
 
 
# main
root = Tk()
root.title("Guess my number")
app = Application(root)
root.mainloop()
Добавлено через 47 минут
Ого!
Я все понял и разобрался!
Я настолько тупил, что даже не заметил, что у меня в GUI стоит while
Вот мой исправленный код!



Python
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
# Guess My Number
#
# The computer picks a random number between 1 and 100
# The player tries to guess it and the computer lets
# the player know if the guess is too high, too low
# or right on the money
 
 
#Напишите собственную версию "Сумасшедшего сказочника",
#в которой система элементов управления внутри окна будет другой.
 
 
 
import random
from tkinter import *
 
class Application(Frame):
    """ GUI application that play with you a game called 'Guess my number'. """
    def __init__(self, master):
        """ Initialize Frame. """
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
 
    def create_widgets(self):
        """ Create widgets to play. """
        # create insturction label
        Label(self,
              text = "Guess that number, maaan!! @_@"
              ).grid(row = 0, column = 0, columnspan = 2, sticky = W)
 
        # create a label and asking number, also entry for that number
        Label(self,
              text = "Type a number"
              ).grid(row = 1, column = 0, sticky = W)
 
        self.number_ent = Entry(self)
        self.number_ent.grid(row = 1, column = 1, sticky = W)
 
        
        # create a submit button
        Button(self,
               text = "Take a guess...",
               command = self.guess
               ).grid(row = 2, column = 0, sticky = W)
 
        self.answer = Text(self, width = 75, height = 10, wrap = WORD)
        self.answer.grid(row = 3, column = 0, columnspan = 4)
 
 
 
    def guess(self):
        # set the initial values
        the_number = random.randint(1, 100)
        guess_num = self.number_ent.get()
 
        if int(guess_num) > the_number:
            xxx = "Lower..."
        elif int(guess_num) < the_number:
            xxx = "Higher..."
        elif int(guess_num) == the_number:
            xxx = "Oh boi! That's right answer!"
 
        self.answer.delete(0.0, END)
        self.answer.insert(0.0, xxx)
 
 
 
 
 
 
# main
root = Tk()
root.title("Guess my number")
app = Application(root)
root.mainloop()
Добавлено через 18 минут
И еще надо строку
Python
1
the_number = random.randint(1, 100)
перенести в main.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        def guess(self):
        # set the initial values
        guess_num = self.number_ent.get()
 
        if int(guess_num) > the_number:
            xxx = "Lower..."
        elif int(guess_num) < the_number:
            xxx = "Higher..."
        elif int(guess_num) == the_number:
            xxx = "Oh boi! That's right answer!"
 
        self.answer.delete(0.0, END)
        self.answer.insert(0.0, xxx)
 
# main
the_number = random.randint(1, 100)
root = Tk()
root.title("Guess my number")
app = Application(root)
root.mainloop()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2018, 05:16
Ответы с готовыми решениями:

Игра отгадай число
Добрый день. Kак доделать с нолем...и посчитать время. Программа загадывает число в диапазоне от 1 до 100. Пользователь пытается его...

Игра Отгадай число с функцией-счётчиком
Здравствуйте! Требуется написать на Python игру Отгадай число. Где компьютер играет сам с собой) цель: создать код, при котором число...

Игра "Отгадай число"
Пишу программу(мини-игра), которая загадывает число, а ты его должен отгадать. Вот мой код: from tkinter import* import random ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2018, 05:16
Помогаю со студенческими работами здесь

Отгадай число
Эта задача немного необычна — в ней вам предстоит реализовать интерактивное взаимодействие с тестирующей системой. Это означает, что вы...

Отгадай число, почему вылетает при нажатии ENTER
#Угадай число print(&quot;\t\tПривет, ты зашёл в интересную игру 'Угадай число'&quot;) print(&quot;\nДля начала немного о правилах:&quot;) ...

Игра - "Отгадай число"
Здравствуйте. Не могли бы Вы мне помочь с этой задачей. Было бы неплохо, если вы мне подсказали алгоритм для выполнения программы, но и...

Игра - "Отгадай число"
Здравствуйте. Не могли бы Вы мне помочь с этой задачей. Было бы неплохо, если вы мне подсказали алгоритм для выполнения программы, но и...

Игра отгадай слово
Вообщем дано задание. У программы в базе слова. Методом случайного числа определяется какое именно слово. Вместо количества букв появляются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru