-1

質問:

charが母音('a'、'e'、'i'、'o'、または'u')の場合はTrueを返し、それ以外の場合はFalseを返す関数isVowel(char)を定義します。charは、どのような場合でも1文字であると見なすことができます(つまり、「A」と「a」は両方とも有効です)。

でキーワードを使用しないでください。関数は単一の文字列を受け取り、ブール値を返す必要があります。

与えられたコード:

def isVowel(char):
    '''
    char: a single letter of any case

    returns: True if char is a vowel and False otherwise.
    '''

私のコード:

def isVowel(char):
    '''
    char: a single letter of any case

    returns: True if char is a vowel and False otherwise.
    '''
    if char == 'a' or 'e' or 'i' or 'o' or 'u' or 'A' or 'E' or 'I' or 'O' or 'U':
        return True
    else:
        return False

私の問題: 私の出力は常にTrueです。私は何が間違っているのですか?

4

7 に答える 7

9

あなたのifステートメント:

if char == 'a' or 'e' or 'i' or 'o' or 'u' or 'A' or 'E' or 'I' or 'O' or 'U':
        return True

と同等です:

if (char == 'a') or 'e' or 'i' or 'o' or 'u' or 'A' or 'E' or 'I' or 'O' or 'U':

これは常にTrue、またはのいずれかに評価されるため、関数は常にを返します。eTrueTrue

ifステートメントを次のように変更します。

if char == 'a' or char == 'e' or char == 'i' so on...:
        return True

inしかし、演算子を使用できれば、この問題は非常に簡単です。これは次のようになります。

def isVowel(char):
    return char.lower() in 'aeiou'
于 2013-02-16T21:19:38.187 に答える
2

Pythonは英語のようには読めません。コードが機能することを期待しますが、次のように評価されます。

if (char == 'a') or ('b') or ('c') ...

'a'は真実であるため(、、、などではありません)False、ステートメントは常に。に評価されます。0NoneifTrue

コードを修正するには、意味を正確に記述する必要があります。

if char == 'a' or char == 'b' or ...

または単に使用してinください:

if char.lower() in 'aeiou':
    ...
于 2013-02-16T21:20:51.943 に答える
2

まず第一に、これはあなたが愚かな制限なしでそれをすることになっている方法です:

def is_vowel(char):
    return char.lower() in 'aeiou'

in演算子は使えないので。infromループが許可されていると仮定します。

def is_vowel(char):
    char = char.lower()
    return any(char == c for c in 'aeiou')

それでも問題が解決しない場合は、これはあまり良いことではありませんがor、他の回答のチェーンとは異なります。

def is_vowel(char):
    return is_in_list(char.lower(), 'aeiou')

def is_in_list(char, lst):
    if not lst:
        return False
    if char == lst[0]:
        return True
    return is_in_list(char, lst[1:])

最後になりましたが、inその機能を使用しながら、演算子の使用を回避できます。

def is_vowel(char):
    return 'aeiou'.__contains__(char.lower())

明らかに、これはあなたの教授/教師が期待するものではない可能性が高いです-しかしそれはあなたが賢いことを彼に示します(または彼はすでにこの投稿を見て、あなたが自分で宿題をしなかったことを知っています)。

于 2013-02-16T21:21:39.700 に答える
2
def is_vowel(char):
    try:
            'aeiou'.index(char.lower())
            return True
    except: 
            return False
于 2013-02-17T09:42:17.927 に答える
1
def is_vowel(char):
    return False if 'aeiouAEIOU'.find(char) < 0 else True
于 2013-10-16T02:49:24.627 に答える
0

MacでXcodeを使用していますが、結果は同じになるはずです。

//Program: Vowels      
#include < iostream >
#include < cctype >

using namespace std;

bool isVowel (char ch);

int main()    
{
    char ch;

    cout << "Enter a letter and I will tell you if it is a vowel: \n" ;      
    cin >> ch;      
    cout << isVowel(ch) << endl;
}

bool isVowel(char ch)    
{       
    ch= tolower(ch);
    if (ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u') {
        return true;
    }
    return false;
}
于 2013-10-16T02:03:51.657 に答える
0
def vowel(char):
    if char.lower() in 'aeiou':
        return True
    if char.upper() in 'AEIOU':
        return TRUE
    else:
        return False
于 2020-05-21T17:37:09.147 に答える