在Python中对字符串字符进行排序并测试字符串中的第一个字母

时间:2017-12-28 14:28:05

标签: python

def a_letter(string):
  s = string.lower()
  if s[0] == 'a':
    return 'alpha'
  else:
    return 'zebra'

此代码正在测试字符串的第一个字母 - 如果它是'a',则返回alpha,否则返回zebra。有更好的方法吗?

4 个答案:

答案 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 "?"