根據您的文章,似乎您希望有機會根據用戶的輸入跳過循環。要做到這一點,你可以用這個算法:
var = input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
elif var in ['n', 'N']:
print("You said no")
else:
while True :
var = input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
break
elif var in ['n', 'N']:
print("You said no")
break
爲什麼不寫而與像var not in ['y', 'Y', 'n', 'N']
的條件?
var = input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
elif var in ['n', 'N']:
print("You said no")
while var not in ['y', 'Y', 'n', 'N']:
var = input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
elif var in ['n', 'N']:
print("You said no")
我們可以切換的東西在而聲明這將工作過,但你可以看到我們的代碼似乎有更多的切點更明確的其他聲明。 唯一的問題是我們增加了冗餘例程的切點。
在我看來,更好和更具可讀性來實現循環內部的輸入。
爲Python 3.x的
while True :
var = input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
break
elif var in ['n', 'N']:
print("You said no")
break
爲Python 2.x的
while True :
var = raw_input("Enter Y/N:")
if var in ['y', 'Y']:
print("You said yes")
break
elif var in ['n', 'N']:
print("You said no")
break
現在我們有一個非常小的代碼做同樣的事情。
我也注意到你只想讀字母{y,n}。區分大小寫的定義僅對用戶有用,這些案例將產生相同的答案。所以,你可能只是下限或上全部投入到簡化條件
爲Python 3.x的
while True :
var = input("Enter Y/N:").lower()
if var == 'y':
print("You said yes")
break
elif var == 'n':
print("You said no")
break
爲Python 2.x的
while True :
var = raw_input("Enter Y/N:").lower()
if var == 'y':
print("You said yes")
break
elif var == 'n':
print("You said no")
break
移動輸入while循環,並確定''var ='''在頂部(在循環之前) – Jkdc
你的'if'條件將總是跳轉到'input(...)' – sam
是啊,我想知道爲什麼他們不會評價。如果我刪除輸入功能,那麼我可以得到所需的打印條件。但它不會循環。 – Patrick