繁体   English   中英

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

[英]Main loop with if statement not working properly

码:

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

它应该没问题,因为它是焦平方(gridValidation)并且恰好有n个不同的字符(nChar - 代码中的问题)。

我正在使用gridValidation

except ValueError: print("error")

这很好。

对于我正在使用的nChar:

if not nChar(latinsq):
    print ("File does not have n different characters.")
    break
else:
    continue

如果我输入文件名示例:ABC它会不断重复“输入文件名”。 它与def nChar或我在主循环中使用它的方式有关。

没有nxn的一个文件的示例:

ABC
BCA
CAB
D

示例文件没有n个不同的字符。

ABD
BCA
CAB

^有4个不同的字符,但它的3x3。

我希望有人可以解释我做错了什么,这样我就可以了解我做错了什么,并解决问题。

TY。

编辑:我读完了我的帖子,这没有意义。

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

你的第一个问题是你说的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM