Python练习题4.14统计字符

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:

输入为10个字符。最后一个回车表示输入结束,不算在内。

代码如下:(PS:这个程序搞的我心态崩了)

#!/usr/bin/python
# -*- coding: utf-8 -*-
#a-z:97-122,A-Z:65-90,0-9:48-57。
#回车,ASCII码13
#换行,ASCII码10
#空格,ASCII码32

z = {"letter":0,"blank":0,"digit":0,"other":0}
s = input()
n = len(s)
#这个判断折腾了半天,难受
while True:
    if n<10:
        s += input()
        n += len(s)+1
        z["blank"] += 1
    else:
        break

for i in range(0,len(s)):
    if ord(s[i]) == 32 or ord(s[i]) == 10:
        z["blank"] += 1
    elif ord(s[i]) >= 97 and ord(s[i]) <=122:
        z["letter"] += 1
    elif ord(s[i]) >= 65 and ord(s[i]) <=90:
        z["letter"] += 1
    elif ord(s[i]) >= 48 and ord(s[i]) <=57:
        z["digit"] += 1
    else:
        z["other"] += 1

#遍历字典,昨天刚学的,今天就忘了使用keys(),欠打
for k in z.keys():
    if k != "other":
        print("{} = {:d}, ".format(k,z[k]),end="")
    else:
        print("{} = {:d}".format(k,z[k]),end="")

这个程序用简单的while循环就可以的,大家可以百度看看。

重点部分:如何判断接收的字符,测试数据中搞了个换行输入,第一个while我折腾了老半天。

测试成功后,我百度看了看,发现别人写的代码很简洁明了。不需要判断ASCII码,部分代码如下:

for i in s:
        if i.isalpha():
            letter += 1
        elif i.isdigit():
            digit += 1
        elif i.isspace():
            blank += 1
        else:
            other += 1

看来对内置的一些方法函数一定要熟记,不然只能笨方法,判断ASCII码。

唉,自己写程序,总是将简单程序复杂化。

读书和健身总有一个在路上