看到一些關于這個的類似帖子,但他們使用了一種叫做 Django 的東西?
首先,這是學校作業,我知道堆疊溢位不喜歡我們學生要求的東西。我只是想澄清一下。
第一個代碼運行,但是當我關閉它時,出現錯誤。在我的 tkinter 視窗中什么也沒有出現。
問題在于以下代碼行:
board2 = EQ([0, 4, 7, 5, 2, 6, 1, 3])
主要功能是測驗類以獲得正確的解決方案。這是一個八皇后問題。希望有人可以幫助我。
這是我的背景關系代碼的其余部分:如果代碼沒有意義,這里是作業的影像,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()
uj5u.com熱心網友回復:
您根本不需要 tkinter,因為應用程式只有控制臺輸出。
由于當前的建構式EQ不接受引數,因此第二個實體創建將引發錯誤。
要修復它,只需修改建構式EQ以接受可選串列:
class EQ:
def __init__(self, queens=None):
self.queens = queens if queens else SIZE*[-1]
# removed tkinter stuff
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/365754.html
