Почему я получаю эту ошибку?
import random
import tkinter as tk
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
random.shuffle(items)
answer = ''
a_count = 0
b_count = 0
for i in range(4):
answer += str(items[i])
def isUnique(str):
n = len(str)
i = 0
while i != n:
if str[i] in str[i + 1:]:
return False
i += 1
return True
win = tk.Tk()
number = tk.StringVar()
count = tk.IntVar()
wintop = tk.Frame(win)
wintop.pack()
win.title('Number Guessing Game (1A2B)')
win.geometry('550x400')
title = tk.Label(wintop, text='Welcome to Number Guessing Game!', font=('Bitter', 18, 'bold'))
title.grid(row=0, column=0, padx=15, pady=10)
winmid = tk.Frame(win, height=280)
winmid.pack()
winbottom = tk.Frame(win)
winbottom.pack()
ques = tk.Label(winbottom, text='Enter the number here:', font=('Bitter', 12)).grid(row=0, column=0, padx=10)
number = tk.Entry(winbottom, width=38).grid(row=0, column=1)
def send():
while(True):
if not (number.get()).isdigit():
l_invalid = tk.Label(winmid, text='Invalid input.\n', font=('Bitter', 12))
l_invalid.pack()
elif isUnique(number) == False or len(number) != 4:
l_invalid = tk.Label(winmid, text='Invalid input.\n', font=('Bitter', 12))
l_invalid.pack()
else:
count += 1
if number.get() == answer:
l_exl = tk.Label(winmid, text='Excellent! You guess the correct number!', font=('bitter', 12))
for i in range(4):
for j in range(4):
if i == j and number.get()[i] == answer[j]:
a_count += 1
elif number.get()[i] == answer[j]:
b_count += 1
l_ab = tk.Label(winmid, text='Ronud {0}: {1}A{2}B.'.format(count, a_count, b_count))
a_count = 0
b_count = 0
button = tk.Button(winbottom, text='SEND', font=('Bitter', 10), command=send).grid(row=0, column=2, padx=10)
win.mainloop()
Это программа python, которую я хочу использовать tkinter для создания игры по угадыванию чисел.
Правило:
Компьютер случайным образом выдаст игроку число 4-di git, например, если? > компьютер выдает число «4567» (эти 4 цифры не должны иметь одинаковых чисел), и игрок может угадать, какое это число на самом деле. Если игрок> угадает «3576», компьютер выдаст игроку код «1A2B». ". «A» означает, что позиция номера правильная, как и в ответе «3576», «5» имеет правильную позицию, поэтому игрок получил одну «A» (1A); для сравнения, в ответе «3576», «6» и «7» только правильное число, но позиция неверна (в «4567» «6» должно быть на 3-м месте, а «7» должно быть на 4-м.), поэтому игрок получил две четверки (2B).