__init__() 采用 1 个位置参数,但给出了 2 个并且为空 tkinter
__init__() takes 1 positional argument but 2 were given and empty tkinter
看到一些类似的帖子,但他们使用了一种叫做 Django 的东西?
首先,这是学校作业,我知道堆栈溢出不喜欢我们学生要求的东西。我只是想澄清一下。
第一个代码运行,但是当我关闭它时,出现错误。在我的 tkinter window 中什么也没有出现。
问题出在下面这行代码:
board2 = EQ([0, 4, 7, 5, 2, 6, 1, 3])
主要功能是测试 class 的正确解决方案。这是一个八皇后问题。
希望有人能帮帮我。
这是我的上下文代码的其余部分:
如果代码没有意义,这里是作业的图像,https://imgur.com/a/G5PdrRQ。
from tkinter import *
SIZE = 8
class EQ:
def __init__(self):
self.queens = SIZE * [-1]
window = Tk()
window.title("Eight Queens")
window.mainloop()
def get(self, i):
return self.queens[i]
def set(self, i, j):
self.queens[i] = j
def is_solved(self):
for i in range(0, 8):
#If two queens are in same row
for j in range(i + 1, 8):
if self.queens[i] == self.queens[j]:
return False
#Diagonal down
count = 1
for j in range(i + 1, 8):
if count + self.queens[i] == self.queens[j]:
return
count += 1
#Diagonal up
count = 1
for j in range(i + 1, 8):
if self.queens[i] - count == self.queens[j]:
return False
count += 1
return True
def print_board(self):
for i in range(0, 8):
for j in range(0,8):
print("|", end = " ")
if self.queens[j] == i:
print("X", end = " ")
else:
print(" ", end = " ")
print("|")
def main():
board1 = EQ()
board1.set(0, 2)
board1.set(1, 4)
board1.set(2, 7)
board1.set(3, 1)
board1.set(4, 0)
board1.set(5, 3)
board1.set(6, 6)
board1.set(7, 5)
print("Is board1 a correct eight queen placement?",
board1.is_solved())
board2 = EQ([0, 4, 7, 5, 2, 6, 1, 3])
if board2.is_solved():
print("Eight queens are placed correctly in board2")
board2.print_board()
else:
print("Eight queens are placed incorrectly in board2")
main()
您根本不需要 tkinter,因为该应用程序只有控制台输出。
由于EQ
的当前构造函数不接受参数,因此创建第二个实例将引发错误。
要修复它,只需修改 EQ
的构造函数以接受可选列表:
class EQ:
def __init__(self, queens=None):
self.queens = queens if queens else SIZE*[-1]
# removed tkinter stuff
...
看到一些类似的帖子,但他们使用了一种叫做 Django 的东西?
首先,这是学校作业,我知道堆栈溢出不喜欢我们学生要求的东西。我只是想澄清一下。
第一个代码运行,但是当我关闭它时,出现错误。在我的 tkinter window 中什么也没有出现。
问题出在下面这行代码:
board2 = EQ([0, 4, 7, 5, 2, 6, 1, 3])
主要功能是测试 class 的正确解决方案。这是一个八皇后问题。 希望有人能帮帮我。
这是我的上下文代码的其余部分: 如果代码没有意义,这里是作业的图像,https://imgur.com/a/G5PdrRQ。
from tkinter import *
SIZE = 8
class EQ:
def __init__(self):
self.queens = SIZE * [-1]
window = Tk()
window.title("Eight Queens")
window.mainloop()
def get(self, i):
return self.queens[i]
def set(self, i, j):
self.queens[i] = j
def is_solved(self):
for i in range(0, 8):
#If two queens are in same row
for j in range(i + 1, 8):
if self.queens[i] == self.queens[j]:
return False
#Diagonal down
count = 1
for j in range(i + 1, 8):
if count + self.queens[i] == self.queens[j]:
return
count += 1
#Diagonal up
count = 1
for j in range(i + 1, 8):
if self.queens[i] - count == self.queens[j]:
return False
count += 1
return True
def print_board(self):
for i in range(0, 8):
for j in range(0,8):
print("|", end = " ")
if self.queens[j] == i:
print("X", end = " ")
else:
print(" ", end = " ")
print("|")
def main():
board1 = EQ()
board1.set(0, 2)
board1.set(1, 4)
board1.set(2, 7)
board1.set(3, 1)
board1.set(4, 0)
board1.set(5, 3)
board1.set(6, 6)
board1.set(7, 5)
print("Is board1 a correct eight queen placement?",
board1.is_solved())
board2 = EQ([0, 4, 7, 5, 2, 6, 1, 3])
if board2.is_solved():
print("Eight queens are placed correctly in board2")
board2.print_board()
else:
print("Eight queens are placed incorrectly in board2")
main()
您根本不需要 tkinter,因为该应用程序只有控制台输出。
由于EQ
的当前构造函数不接受参数,因此创建第二个实例将引发错误。
要修复它,只需修改 EQ
的构造函数以接受可选列表:
class EQ:
def __init__(self, queens=None):
self.queens = queens if queens else SIZE*[-1]
# removed tkinter stuff
...