Уведомления

Группа в Telegram: @pythonsu

#1 Май 17, 2017 00:10:32

Den59
Зарегистрирован: 2017-05-17
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

"отгадай число" с использованием графического интерфейса

Ребята, я изучаю 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)

Прикреплённый файлы:
attachment Снимок экрана 2017-05-17 в 2.07.40.png (122,4 KБ)

Офлайн

#2 Май 17, 2017 04:50:06

stas90
Зарегистрирован: 2017-05-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

"отгадай число" с использованием графического интерфейса

Попробуй отследить содержание переменной num после нажатия на кнопку, может быть типы данных разные?

Может сравнить их как if Int(num) == Int(random)

Офлайн

#3 Май 17, 2017 10:23:00

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

"отгадай число" с использованием графического интерфейса

1 заключай код в теги “code python” “/code” чтобы были видны отступы
2. number имеет тип int
3. num2 имеет тип str потому что tkinter.Entry.get() возвращает строку
4. сравнивая число и строку вы всегда получите False



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#4 Май 17, 2017 14:00:05

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

"отгадай число" с использованием графического интерфейса

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)

Отредактировано marvellik (Май 17, 2017 14:03:02)

Офлайн

#5 Май 17, 2017 16:43:17

Den59
Зарегистрирован: 2017-05-17
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

"отгадай число" с использованием графического интерфейса

Большое всем спасибо за ответы, все получилось!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version