我正在研究一个用于python的数独游戏程序,我需要一些帮助。该程序将询问用户输入的9行数字,希望包含数字1-9。一旦他们输入了所有9行,程序就应该遍历每一行并验证它是否满足数独游戏的条件。如果没有,它将返回错误消息并显示哪一行有错误。现在我需要帮助的是如何最好地检查行而不编写9个不同的if语句。我需要合并一个循环。我该怎么做?
到目前为止,我在代码方面的进展如下:
from a5_import import *
import sys
sep = "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-."
print sep
print " Sudoku Verifier! "
print sep
row_0=int(raw_input("Enter Row 0: "))
row_1=int(raw_input("Enter Row 1: "))
row_2=int(raw_input("Enter Row 2: "))
row_3=int(raw_input("Enter Row 3: "))
row_4=int(raw_input("Enter Row 4: "))
row_5=int(raw_input("Enter Row 5: "))
row_6=int(raw_input("Enter Row 6: "))
row_7=int(raw_input("Enter Row 7: "))
row_8=int(raw_input("Enter Row 8: "))
if not check9(row0):
print "Error: row 0 is invalid."
if not check9(row1):
print "Error: row 1 is invalid."
if not check9(row2):
print "Error: row 2 is invalid."
if not check9(row3):
print "Error: row 3 is invalid."
if not check9(row4):
print "Error: row 4 is invalid."
if not check9(row5):
print "Error: row 5 is invalid."
if not check9(row6):
print "Error: row 6 is invalid."
if not check9(row7):
print "Error: row 7 is invalid."
if not check9(row8):
print "Error: row 8 is invalid."
print sep
再次要求我需要完成以下三件事:
感谢您对验证程序循环的帮助。
答案 0 :(得分:1)
您可以通过将行转换为集来检查行
if set(row) == set(range(1,10)):
# ok
...
你需要先将行转换为str,但
答案 1 :(得分:0)
好的,在这种情况下我可以看到两个循环的空间。
LoopA是一个获取输入的循环,LoopB是一个循环,它在这里检查输出示例:
from a5_import import *
import sys
sep = "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-."
print sep
print " Sudoku Verifier! "
print sep
rows = []
for rowNum in range(1, 9):
rowInput = int(raw_input("Enter Row %s: "% rowNum)) ## This is the same as int(raw_input("Enter Row +rowNum+": "))
rows.append(rowInput) ##add the input to the list of rows
for row in rows:
if not check9(row):
print "Row %s is not valid"% rows[rows.index(row)] ##Prints the row position number
print sep
使用行列表是验证的最佳选择。
答案 2 :(得分:0)
我建议使用数组而不是执行row_0,row_1,row_2等。
尝试更像这样的事情:
row = []
for count in range (0, 9):
answer = int(raw_input("Enter Row %s: " % count))
if answer in row:
PROBLEM?
else:
row.append (answer)