Почему я получаю сообщение об ошибке «TypeError:» <не поддерживается между экземплярами «str» и «int» », когда я пытаюсь выполнить этот код? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать программу игры с угадыванием, в которой вам нужно угадать число от 0 до 100 на GUI, используя Tkinter, и он также подсчитывает количество ваших попыток, но я получаю эту ошибку в строке 25:

'<' не поддерживается между экземплярами str и int. </p>

Что я могу сделать, чтобы решить эту проблему? Этот код будет работать в командной строке, но не тогда, когда я попытался перевести его в GUI. Я также не уверен, что этот код вообще работает.

Мой обновленный код:

import random
from tkinter import *
#need to count how many attempts you made
window = Tk()

window.title("Number guessing game")

window.geometry('350x200')

lbl = Label(window, text="Enter a number here from 1-100: ")

lbl.grid(column=0,row=0)

guess_var = IntVar(window)

txt = Entry(window, textvariable=guess_var)

txt= Entry(window, width=10)

txt.grid(column=1,row=0)

numguess = 0

secret_num = random.randint(1, 100)

def clicked():
    if guess < 0:
        lbl2.configure(text ="Please enter a sensible number.")
    if guess > 100:
        lbl2.configure(text ="Please enter a sensible number.")
    if guess == secret_num:
        lbl2.configure(text ="You guessed correctly.")
        lbl3.confgure(text=numguess)
    elif guess < secret_num:
        numguess = numguess + 1
        lbl2.configure(text ="higher!")
        lbl = Label(window, text="Enter a number here from 1-100: ")
    else:
        numguess = numguess + 1
        lbl2.configure(text ="lower!")
        lbl = Label(window, text="Enter a number here form 1-100")

lbl2 = Label(window,text = " ")

lbl2.grid(column=1, row=2)

lbl3 = Label(window,text = " ")

lbl3.grid(column=1, row=3)

btn = Button(window, text="Enter", command=clicked)

guess = int(txt.get())

btn.grid(column=3, row=0)

window.mainloop()

1 Ответ

1 голос
/ 20 марта 2020
guess = txt.get()

возвращает строковое значение. Чтобы иметь возможность выполнять сравнение с целыми числами, вам необходимо преобразовать guess из строки в целое число, то есть:

guess = int(txt.get())

Чтобы быть в безопасности, вам может потребоваться обработать случай, когда пользователь вводит что-то который не может быть преобразован в целое число; как это сделать, зависит от дизайна вашей проблемы - вам следует рассмотреть возможность проверки ввода пользователя.

Одним из способов сделать это может быть использование IntVar, например:

guess_var = IntVar(window)                                                      
txt = Entry(window, textvariable=guess_var)                                     

txt.grid(column=1,row=0)                                                        

numguess = 0                                                                    

secret_num = random.randint(1, 100)                                             

guess = guess_var.get()

Обратите внимание, что если вы хотите использовать глобальную переменную numguess внутри вашей функции clicked, вам необходимо объявить global numguess в определении функции, например:

def clicked():                                                                  
    global numguess
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...