簡體   English   中英

Python中的if / else循環問題

[英]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值,在這里將為Truee ,具體取決於您的第一個條件為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM