本题要求编写程序,输入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码。
唉,自己写程序,总是将简单程序复杂化。
读书和健身总有一个在路上