[英]Issues with a if/else loop in Python
我正在嘗試使用Python制作此Pig Latin轉換器,並且在我嘗試縮小尺寸之前一直工作良好。
有人可以看一下這段代碼,然后告訴我為什么,當我在開頭輸入沒有元音的單詞時,仍然會在此if語句中打印“元音”代碼嗎?
碼:
pyg = 'ay'
original = raw_input('Enter a word: ')
low_original = original.lower()
if len(low_original) > 0 and low_original.isalpha():
print low_original
if low_original[0] == 'a' or 'e' or 'i' or 'o' or 'u':
print "vowel"
pyg_vowel = low_original + pyg
print pyg_vowel
else:
print "consonant"
pyg_cons = low_original[1: ] + low_original[0] + pyg
print pyg_cons
else:
print 'empty'
您需要分別檢查所有元音。
目前,您的if條件評估為:-
if (low_original[0] == 'a') or 'e' or 'i' or 'o' or 'u':
or
返回其條件中的第一個true值,在這里將為True
或e
,具體取決於您的第一個條件為True還是不為True。 現在,由於'e'
被評估為True
,因此兩個值都為true
,因此您的條件將始終為true
。
您應該這樣做:-
if low_original[0] in 'aeiou':
要么: -
if low_original[0] in ('a', 'e', 'i', 'o', 'u'):
您應該替換字符串:
if low_original[0] == 'a' or 'e' or 'i' or 'o' or 'u':
與:
if low_original[0] in ('a', 'e', 'i', 'o', 'u'):
如果是alwasys,則返回True!
pyg = 'ay'
original = raw_input('Enter a word: ')
low_original = original.lower()
if len(low_original) > 0 and low_original.isalpha():
print low_original
if low_original[0] in ['a' , 'e' , 'i' , 'o' , 'u']:
print "vowel"
pyg_vowel = low_original + pyg
print pyg_vowel
else:
print "consonant"
pyg_cons = low_original[1: ] + low_original[0] + pyg
print pyg_cons
else:
print 'empty'
問題出在'如果low_original [0] =='a'或'e'或'i'或'o'或'u':'-首先不是pythonic其次沒有給您沒有您期望的結果。
嘗試將您的代碼更新為:
pyg = 'ay'
original = raw_input('Enter a word: ')
low_original = original.lower()
if len(low_original) > 0 and low_original.isalpha():
print low_original
if low_original[0] in ('a', 'e', 'i', 'o', 'u'):
print "vowel"
pyg_vowel = low_original + pyg
print pyg_vowel
else:
print "consonant"
pyg_cons = low_original[1: ] + low_original[0] + pyg
print pyg_cons
else:
print 'empty'
將if語句替換為
if low_original[0] in ['a', 'e', 'i', 'o', 'u']
在這種狀況if
將始終評估為True
。
if low_original[0] == 'a' or 'e' or 'i' or 'o' or 'u':
print "vowel"
pyg_vowel = low_original + pyg
print pyg_vowel
與if (low_original[0] == 'a') or 'e' or 'i' or 'o' or 'u'
您應該if low_original[0] in 'aeiou'
使用if low_original[0] in 'aeiou'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.