if语句无法正常工作的主循环

时间:2016-03-09 15:49:14

标签: python python-3.x

代码:

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。

编辑: 我通读了我的帖子,这没有用。

问题是,当我执行代码并输入文件名时,它会一直说“输入文件名”。

1 个答案:

答案 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