代码:

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

10-05 22:52