[英]Loop function printing out multiple same outputs instead of just one
我編寫了這段代碼來檢查大寫、小寫等,而不使用函數。 它在檢測不同輸入方面工作得很好,但它會為每個輸入打印出 output。 試圖找出錯誤,但這只會使問題惡化。 我的代碼
mylist=[]
end=str("!")
a=0
counter=0
while a != end:
a=input()
mylist.append(a)
for i in mylist:
if i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
print("1",end='')
else:
print("0",end='')
if i in 'abcdefghijklmnopqrstuvwxyz':
print("1",end='')
else:
print("0",end='')
if i in '0123456789"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c':
print("1", end='')
else:
print('0', end='')
for i in mylist:
counter=counter+1
counter=counter-1
if counter < 7:
print("0")
else:
print("1")
例如,如果我輸入 ab c de,它會輸出 5 次 0100 和 1 次 0000 而不是 0100 一次。 這就是我要找的。
這是因為您有多個單獨的if
塊,並且當只有一個滿足時,這些值將從其他else
塊中打印出來。
您應該考慮將if-elif-else
塊用作:
if i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
print("1",end='')
elif i in 'abcdefghijklmnopqrstuvwxyz':
print("1",end='')
elif some more conditions:
# do something
else:
print("0",end='')
此外,如果您只想在所有塊中打印相同的內容,您可以考慮將所有if
塊合並為一個:
if i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' or i in 'abcdefghijklmnopqrstuvwxyz':
print("1",end='')
在每個條件后添加一個 Break 語句,因此每次檢查后都會退出循環,並且不會驗證所有條件,從而避免多次打印
您的應用程序中的問題是每個字符都在每個 if 中進行驗證,因此在三個不同的 if 語句中測試一個字符,因此每個字符將 output 三個數字(一個或零)。 之后,您在 main for 中創建了另一個 for 來檢查列表中的字符數。 在主 for 循環之外執行此操作,我認為這就是您想要的。 一個建議,嘗試使用 len(..) 而不是僅僅為了大小而循環整個列表。
我建議你拿一張紙和一支筆,一步一步地測試你的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.