def a_letter(string):
s = string.lower()
if s[0] == 'a':
return 'alpha'
else:
return 'zebra'
此代码正在测试字符串的第一个字母 - 如果它是'a',则返回alpha
,否则返回zebra
。有更好的方法吗?
答案 0 :(得分:3)
我认为这样做的好方法是:
def a_letter(s):
return 'alpha' if s and s[0].lower() == 'a' else 'zebra'
因为它清晰且充分简洁。
答案 1 :(得分:1)
如果你只有两个条件,你可以尝试一个穷人的conditional expression
git clone <url> --branch <branch> --single-branch [<folder>]
它如何运作?
print(['zebra','alpha'][string[0].lower() =='a'])
因为布尔值是int的子类,所以True == 1, False == 0
生成一个整数值,但[string.lower()[0]=='a']
将其作为索引值。
答案 2 :(得分:0)
明确没有任何内在错误。也许你应该在评论中指出Willem Van Onzem指出的空字符串。你可以这样做 - 例如 - 使用str.startswith
这是检查前缀的内置方法。还有更短的方法吗? - 当然:
return ('zebra', 'alpha')[s.startswith(('a', 'A'))]
或者更可读,使用三元运算符:
return 'alpha' if s.startswith(('a', 'A')) else 'zebra'
答案 3 :(得分:0)
做一个更全面的解决方案,为每个字母
返回一些内容voc =将北约字母名称列表转换为字母到名称
的字典映射def语音检查输入是否在dict中然后返回值,或者?如果它被混淆
voc=dict([[string.lower(x[0]), x] for x in
['ALFA',
'BRAVO',
'CHARLIE',
'DELTA',
'ECHO',
'FOXTROT',
'GOLF',
'HOTEL',
'INDIA',
'JULIETT',
'KILO',
'LIMA',
'MIKE',
'NOVEMBER',
'OSCAR',
'PAPA',
'QUEBEC',
'ROMEO',
'SIERRA',
'TANGO',
'UNIFORM',
'VICTOR',
'WHISKEY',
'XRAY',
'YANKEE',
'ZULU']])
def phonetic(letter):
if letter in voc:
return voc[letter]
else:
return "?"