如何缩短此代码(减少行数等)

时间:2018-01-08 22:15:48

标签: python python-2.7

我正在编写代码,并希望尽可能缩短代码,有什么方法可以吗?

text = raw_input("Give me some text > ")
list1 = []
for char in text:
  num = ord(char)
  if num in range(48,57):
    print "ERROR 319: Number entered"
    quit()
  elif num in range(65,90) or num in range (97,122):
    upper = char.upper()
    list1.append(upper)
num1 = 0
vowelCount = 0 
conCount = 0
for x in range(len(list1)):
  if list1[num1] == "A" or list1[num1] == "E" or list1[num1] == "I" or list1[num1] == "O" or list1[num1] == "U":
    vowelCount = vowelCount + 1
  else:
    conCount = conCount + 1
  num1 = num1 + 1 
print "Vowels: " +str(vowelCount) + " Consonants: " + str(conCount)

2 个答案:

答案 0 :(得分:4)

您可以使用字符串方法:

,而不是使用角色的ord()
char.isdigit() # check if a char is a digit
char.isalpha() # check if char is letter

要检查元音计数,请尝试:

vowel_count = len(filter(lambda c: c in "aeiou", list1))
cons_count = len(list1) - vowel_count

答案 1 :(得分:2)

根据AmourK的答案,你可以做这样的事情:

text = raw_input("Give me some text > ")
vowel_count = len(filter(lambda c: c in "aeiou", text))
cons_count  = len(filter(lambda c: c not in "aeiou" and c.isalpha(), text))
print "Vowels: %d Consonants: %d" % (vowel_count, cons_count)