Найти - Пользователи
Полная версия: "отгадай число" с использованием графического интерфейса
Начало » Python для новичков » "отгадай число" с использованием графического интерфейса
1
Den59
Ребята, я изучаю Python по книге Майкла Доусона.
Не могу понять, почему мой код не работает, прошу помочь…

Вся проблема в том, что после нажатия кнопки “проверка”
ответ в текстовом поле Все время “ ты проиграл ”

почему мой г***о-код не работает с числами, но при этом работает с ‘текстом’ ?

#программа угадай число v.2!
import random
from tkinter import *



class Application(Frame):
“”“графический интерфейс для программы ”угадай число“ ”“”
def __init__(self,master):
super(Application,self).__init__(master)
self.grid()
self.create_widgets()

def create_widgets(self):
“”“создание всех кнопок для программы”“”
#бла бла бла
Label(self,
text=“сможешь ли ты угадать число?”
).grid(row=0,column=0,columnspan=2,sticky=W)
#метка около ввода
self.pw=Label(self,text=“число: ”)
self.pw.grid(row=1,column=0,sticky=W)
#поле ввода числа
self.num=Entry(self)
self.num.grid(row=1,column=1,sticky=W)

#кнопка отправки значения
self.submit_bttn=Button(self,text='проверка',command=self.answer)
self.submit_bttn.grid(row=2,column=1,sticky=W)

#активация кнопки что связана с answer()
self.secret_txt=Text(self,width=35,height=5,wrap=WORD)
self.secret_txt.grid(row=3,column=0,columnspan=2,sticky=W)

def answer(self):
“”“в зависимости от правильности разные ответы”“”
number=random.randint(1,10)
num2=self.num.get()
if num2==number:
message=“ты победил”
else:
message=“ты проиграл”
self.secret_txt.delete(0.0,END)
self.secret_txt.insert(0.0,message)


#основная программа
root=Tk()
root.title('угадай число')
app=Application(root)
root.mainloop()
stas90
Попробуй отследить содержание переменной num после нажатия на кнопку, может быть типы данных разные?

Может сравнить их как if Int(num) == Int(random)
PEHDOM
1 заключай код в теги “code python” “/code” чтобы были видны отступы
2. number имеет тип int
3. num2 имеет тип str потому что tkinter.Entry.get() возвращает строку
4. сравнивая число и строку вы всегда получите False
marvellik
Den59
ответ в текстовом поле Все время “ ты проиграл
наверно потому что очень сложно угадать рандомное число и точно всегда проиграешь потому что
number=random.randint(1,10) это число (тип int) а self.num.get() возвращает строку (тип str)
и как понимаешь if num2==number: всегда False так как сравниваются два разных типа
вот твоя функция с статетическим числом 25 вставь вместо своей и все будет работать если введешь 25 то угадаешь остальные проиграешь
   def answer(self):
            number= 25
            num2=int(self.num.get())
            if num2==number:
                  message='ты победил'
            else:
                  message='ты проиграл'
            self.secret_txt.delete(0.0,END)
            self.secret_txt.insert(0.0,message)
Den59
Большое всем спасибо за ответы, все получилось!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB