Python 练习实例17
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'。
实例 - 使用 while 循环
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import string
s = raw_input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
i=0
while i < len(s):
c = s[i]
i += 1
if c.isalpha():
letters += 1
elif c.isspace():
space += 1
elif c.isdigit():
digit += 1
else:
others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)
实例 - 使用 for 循环
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import string
s = raw_input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:
if c.isalpha():
letters += 1
elif c.isspace():
space += 1
elif c.isdigit():
digit += 1
else:
others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)
以上实例输出结果为:
请输入一个字符串: 123runoobc kdf235*(dfl char = 13,space = 2,digit = 6,others = 2
健健
459***163@qq.com
Python3 下参考方案(可使用中文作为变量):
健健
459***163@qq.com
等一个人
252***465@qq.com
Python3 下测试:
等一个人
252***465@qq.com
大愚
923***317@qq.com
使用正则表达式来计算(无法统计中文,要统计中文可以参考下面的例子):
大愚
923***317@qq.com
小雨济苍生
27d***163.com
参考方法:
小雨济苍生
27d***163.com
Almighty
132***9971@qq.com
python3 参考方法:
Almighty
132***9971@qq.com
Flytiger
841***699@qq.com
使用匿名函数 lambda:
Flytiger
841***699@qq.com
chengxuyuan
hdw***taoyuan@foxmail.com
用 decode() 解码可以统计中文个数,utf-8 下一个中文占 3 位。
chengxuyuan
hdw***taoyuan@foxmail.com
tlf
694***841@qq.com
Python3 测试,可以统计中文:
tlf
694***841@qq.com
zhangsan
10k***aizhang@gmail.com
参考方法:
zhangsan
10k***aizhang@gmail.com