代码:
def nChar(nc):
grid = len(nc)
chars = set()
for line in nc:
line = set(line)
if len(line) != grid or len(chars) != grid:
return False
return True
什么错了? 当我打开一个看起来像
的文件ABC
BCA
CAB
它应该没问题,因为它是一个n x n平方(gridValidation),并且正好有n个不同的字符(nChar - 代码中的问题)。
for gridValidation我正在使用
except ValueError: print("error")
并且工作正常。
对于我正在使用的nChar:
if not nChar(latinsq):
print ("File does not have n different characters.")
break
else:
continue
如果我输入文件名示例:ABC则不断重复“输入文件名”。它与def nChar或我在主循环中使用它的方式有关。
没有n x n的一个文件的示例:
ABC
BCA
CAB
D
没有n个不同字符的示例文件。
ABD
BCA
CAB
^有4个不同的字符,但是3x3。
我希望有人可以解释我做错了什么,这样我就可以了解我做错了什么,并解决问题。
TY。
编辑: 我通读了我的帖子,这没有用。
问题是,当我执行代码并输入文件名时,它会一直说“输入文件名”。
答案 0 :(得分:2)
您的第一个问题是您使用else: continue
阻止if not nChar(latinsq):
。如果你到达那一点,要么广场错了你就破了,要么广场是正确的你不要。您应该更改if
块以使用continue
,并同时删除else
块。你的第二个问题是nChar()
没有回复正确的事情。它始终会检查行中的唯一字符数是否超过行数,但您不知道总个字符数是否为太多。你可以这样检查:
def nChar(nc):
grid = len(nc)
chars = set()
for line in nc:
line = set(line)
chars = chars.union(line)
if len(line) != grid or len(chars) != grid:
return False
return True