Python练习题4.14统计字符

Posted 我要去西藏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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码。

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


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

以上是关于Python练习题4.14统计字符的主要内容,如果未能解决你的问题,请参考以下文章

Python学习—字符串练习

33 python format练习题 利用format方法生成一个星号三角形

统计一段文章的单词频率,取出频率最高的5个单词和个数(python)

Python - 统计系统内存练习

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

商品房数据统计Python习题(保姆级图文+实现代码)