[英]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.