Форум сайта python.su
Ребята, я изучаю 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()
Отредактировано Den59 (Май 17, 2017 00:43:05)
Прикреплённый файлы: Снимок экрана 2017-05-17 в 2.07.40.png (122,4 KБ)
Офлайн
Попробуй отследить содержание переменной num после нажатия на кнопку, может быть типы данных разные?
Может сравнить их как if Int(num) == Int(random)
Офлайн
1 заключай код в теги “code python” “/code” чтобы были видны отступы
2. number имеет тип int
3. num2 имеет тип str потому что tkinter.Entry.get() возвращает строку
4. сравнивая число и строку вы всегда получите False
[code python][/code]
Офлайн
Den59наверно потому что очень сложно угадать рандомное число и точно всегда проиграешь потому что
ответ в текстовом поле Все время “ ты проиграл
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)
Отредактировано marvellik (Май 17, 2017 14:03:02)
Офлайн
Большое всем спасибо за ответы, все получилось!
Офлайн