问题:
定义一个函数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。我做错了什么?
答案 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':
将始终评估为True
或e
,True
,因此您的函数始终返回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'
是真实的(不是False
,0
,None
等等,因此您的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