簡體   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