我想做一個必須有2個回圈的函式:
- 必須檢查是否插入了至少 2 個字符(字母)
- 如果這兩個字符是變數必須在最后接收的形式,則變數接收正確的拼寫形式。
這是我的代碼(但它讓我陷入無限回圈)[請放縱我一個初學者(:]:
def sede():
while True:
import re
var_sede_0 = input("Sede : ")
if re.match("([a-zA-Z] .*?){2,}", var_sede_0):
while True:
if var_sede_0.lower() in 'torino (to)':
var_sede_0 = 'Torino (TO)'
break
elif var_sede_0.lower() in 'reggio calabria (rc)':
var_sede_0 = 'Reggio Calabria (RC)'
break
else:
print("sbagliato")
continue
break
else:
print("formato sbagliato")
continue
return var_sede_0
var_sede = sede()
uj5u.com熱心網友回復:
您的內部回圈是問題所在:
while True:
if var_sede_0.lower() in 'torino (to)':
var_sede_0 = 'Torino (TO)'
break
elif var_sede_0.lower() in 'reggio calabria (rc)':
var_sede_0 = 'Reggio Calabria (RC)'
break
else:
print("sbagliato")
continue
考慮到在這個回圈中你沒有接受新的輸入,所以var_sede_0
永遠不可能改變。鑒于此,如果前兩個謂詞(if 陳述句)評估為 false,那么您將處于無限回圈列印 out sbagliato
。您可能可以簡單地洗掉while True
(內部的)并獲得您想要的。
重要的是要注意,break
并且continue
實際上只會影響while
他們所處的直接背景關系 - 他們不會“與”外部while
回圈“對話”。
您也可能不想re
在每個回圈上都匯入。移動import re
到檔案的頂部。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506266.html