代码:
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-problem)。
对于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。
我希望有人能解释我做错了什么,这样我就能知道我做错了什么,也能解决问题。
泰。
编辑:
我通读了我的文章,但没有任何意义。
问题是,当我执行代码并输入文件名时,它总是说“输入文件名”。
最佳答案
你的第一个问题是你用你的块说。如果你到了那一点,要么方块是错的,你会折断,要么方块是对的,你不会。你应该把else: continue
块改成使用if not nChar(latinsq):
,然后把if
块一起去掉。第二个问题是continue
没有返回正确的内容。它总是检查行中的唯一字符数是否大于行数,但看不到字符总数是否太多。你可以这样检查:
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