Форум сайта python.su
0
задание—перепишите игру отгадай число
код:
#отгадай число
#
#Компьютер выбирает случайное число в диапозоне от 1 до 100
#Игрок пытается отгадать число а компьютер говорит.
#предположение больше меньше чем загадочо число
#и попало в точку
import random
print(“\tдобро пожаловать в игру ‘отгадай число’”)
print(“\nЯ загадал натуральное число из диапозона от 1 до 100”)
print(“Постарайтесь отгадать его за минимальное число попыток\n”)
#начальные значения
the_number = random.randint(1, 100)
guess = int(input(“Ваше предположение: ”))
tries = 1
#цикл отгадывания
while guess != the_number:
if guess > the_number:
print(“Меньше..”)
else:
print(“Больше..”)
guess = int(input(“Ваше предположение”))
tries += 1
print(“вам удалось отгадать число это на самом деле”,the_number)
print(“Вы затратили на отгадывание всего лишь”,tries,“попыток\n”)
input(“\n\nНажмите Enter,чтобы выйти”)
Для нее надо создать графический интерфейс я написал но почему то программа зависает и после while ничего не работает((((
#отгадать число
from tkinter import *
class Application(Frame):
“”“gui-приложение которое создает рассказ на основе пользовательского ввода”“”
def __init__(self,master):
“”“инициализирует рамку”“”
super(Application,self).__init__(master)
self.grid()
self.create_widget()
def create_widget(self):
“”“содает элементы управления спомошью которых\
пользователь будет вводить данные и играть”“”
#метка с тектом приветсвия
Label(self,
text=“Добро пожаловатьвигру отгадай число”
).grid(row=0,column=0,columnspan=2,sticky=W)
#метка указатель
Label(self,
text=“Ведите число:”
).grid(row=1,column=0,sticky=W)
#поле ввода числа
self.igrok_number=Entry(self)
self.igrok_number.grid(row=1,column=1,sticky=W)
#кнопка отсылки данных
Button(self,
text=“принять число”,
command=self.play
).grid(row=1,column=2,sticky=W)
#тектовая область
self.play_txt=Text(self,font
'times',15),width=75,height=10,wrap=WORD)
self.play_txt.grid(row=7,column=0,columnspan=4)
def play(self):
“”“заполняет тектовую область игрой”“”
#передает переменной number значение
import random
#начальные значения
the_number = random.randint(1, 100)
guess=int(self.igrok_number.get())
tries = 1
#цикл отгадывания
while guess != the_number:
if guess > the_number:
self.play_txt.insert(1.1,“Меньшее..\n”)
else:
self.play_txt.insert(1.1,“Большее..\n”)
guess = int(self.igrok_number.get())
tries += 1
self.play_txt.insert(1+1.1,“вам удалось отгадать число это на самом деле”+str(the_number)+“\n”)
self.play_txt.insert(1+2.1,“Вы затратили на отгадывание всего лишь”+str(tries)+“попыток\n”)
#основная часть
root=Tk()
root.title(“отгадай число”)
app=Application(root)
root.mainloop()
Прикреплённый файлы:
guess_my_number.py (2,7 KБ)
Офлайн
73
дело в том что в простом коде в цикле ожидается ввод guess = int(input(“Ваше предположение”)) и цикл стоит в ожидании ввода и нажатия энтер. в тк же в цикле постоянно считывается число введенное в поле вода и проверяется(бесконечный цикл если сразу не угадал) да и менять загаданное слово при каждом нажатии кнопки ввода числа как то не совсем честно для угадывания 
#отгадать число from tkinter import * import random class Application(Frame): def __init__(self,master): """инициализирует рамку""" super(Application,self).__init__(master) self.grid() Label(self, text="Добро пожаловать в игру отгадай число" ).grid(row=0,column=0,columnspan=2,sticky=W) self.but = Button(self, text="НАЧНЕМ ?", command=self.create_widget) self.but.grid(row=1,column=2,sticky=W) def create_widget(self): the_number = random.randint(1, 100) self.tries = 1 self.igrok_number=Entry(self) self.igrok_number.grid(row=1,column=1,sticky=W) self.play_txt=Text(self,font=('times 15'),width=75,height=10,wrap=WORD) self.play_txt.grid(row=7,column=0,columnspan=4) self.but.config(text = 'принять число', command = lambda : self.play(the_number)) def play(self,the_number): Label(self,text="Ведите число:" ).grid(row=1,column=0,sticky=W) guess=int(self.igrok_number.get()) if guess == the_number: self.play_txt.insert(0.1,"Вам удалось отгадать число это на самом деле "+str(the_number)+"\n") self.play_txt.insert(0.1,"Вы затратили на отгадывание всего лишь "+str(self.tries)+" попыток\n") self.but.config(text = 'Еще раз ?',command=self.create_widget) elif guess > the_number: self.play_txt.insert(0.1,'Число - {} больше\n'.format(guess)) else: self.play_txt.insert(0.1,'Число - {} меньше\n'.format(guess)) self.igrok_number.delete(0, END) self.tries += 1 root=Tk() root.title("отгадай число") app=Application(root) root.mainloop()
Отредактировано marvellik (Июнь 12, 2017 18:37:53)
Офлайн