定义一个函数isVowel(char),如果char是元音('a','e','i','o'或'u'),则返回True,否则返回False

时间:2013-02-16 21:18:29

标签: python

问题:

定义一个函数isVowel(char),如果char是元音('a','e','i','o'或'u'),则返回True,否则返回False。您可以假设char是任何情况下的单个字母(即'A'和'a'都有效)。

不要使用关键字in。您的函数应该接受一个字符串并返回一个布尔值。

代码:

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。我做错了什么?

8 个答案:

答案 0 :(得分:8)

你的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':

将始终评估为TrueeTrue,因此您的函数始终返回True

将您的if语句更改为:

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

但是,如果您可以使用in运算符,则此问题非常简单。这是这样的:

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

答案 1 :(得分:2)

Python不像英语那样读。您希望您的代码能够正常运行,但它的评估方式如下:

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

'a'是真实的(不是False0None等等,因此您的if语句将始终评估为{{1} }。

要修复代码,您必须完全按 的意思编写

True

或者只使用if char == 'a' or char == 'b' or ...

in

答案 2 :(得分:2)

首先,这是你应该如何做到没有愚蠢的限制:

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

由于您无法使用in运算符。我假设允许循环中的in

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())

显然,这很可能不是你的教授/老师所期望的 - 但它会告诉他你很聪明(或者他已经看过这篇帖子并且知道你自己没有做过你的作业)。 / p>

答案 3 :(得分:2)

def is_vowel(char):
    try:
            'aeiou'.index(char.lower())
            return True
    except: 
            return False

答案 4 :(得分:1)

def is_vowel(char):
    return False if 'aeiouAEIOU'.find(char) < 0 else True

答案 5 :(得分: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;
}

答案 6 :(得分:0)

def vowel(char):
    if char.lower() in 'aeiou':
        return True
    if char.upper() in 'AEIOU':
        return TRUE
    else:
        return False

答案 7 :(得分:-1)

编写一个函数translate(),将文本翻译成“rövarspråket”(瑞典语为“强盗的语言”)。也就是说,每个辅音都加倍,并在它们之间出现“o”。例如,翻译(“这很有趣”)应该返回字符串“tothohisos isos fofunon