zoukankan      html  css  js  c++  java
  • 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码。

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


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

  • 相关阅读:
    scikit-learn算法选择路径图
    mac 添加new file.md
    mac-VBox-Centos6.6安装增强功能
    VirtualBox中安装CentOS使得在ssh和外网都能正常链接
    vboxnetctl: no such file or directory
    mac vim 配色
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 B合约数
    codeforces 965E Trie+multiset
    bzoj 4337 树的同构
    codeforces 963B Destruction of a Tree
  • 原文地址:https://www.cnblogs.com/Renqy/p/12740517.html
Copyright © 2011-2022 走看看