python2.7练习小例子(十六)
16):题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'。
程序源代码:
#!/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)
#!/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
Python3 下参考方案(可使用中文作为变量):
#!/usr/bin/python3 a = input('请输入一串字符:')
英文 = 0
空格= 0
数字= 0
其他= 0
for i in a:
if i.isalpha():
英文 += 1
elif i.isspace():
空格 += 1
elif i.isnumeric():
数字 += 1
else:
其他 += 1
print('英文 = %s,空格 = %s,数字 = %s,其他 = %s' % (英文,空格,数字,其他))
Python3 下测试:
#!/usr/bin/env python3 InPut = input('输入任意字符:')
letters = []
spaces = []
digits = []
others = []
for i in iter(InPut):
if i.isalpha() == True:
letters.append(i)
elif i.isspace() == True:
spaces.append(i)
elif i.isdigit() == True:
digits.append(i)
else:
others.append(i)
print('''
字母: {}, 个数: {};
空字符: {}, 个数: {};
数字: {}, 个数: {};
其他: {}, 个数: {}'''.format(letters, len(letters), spaces, len(spaces), digits, len(digits), others, len(others)))
使用正则表达式来计算(无法统计中文,要统计中文可以参考下面的例子):
#!/usr/bin/python
# -*- coding: UTF-8 -*- import re def splitFunc():
tmpStr = raw_input("输入字符串:")
charNum = 0
digNum = 0
spaceNum=0
otherNum =0
for i in range(len(tmpStr)):
if re.match('\d',tmpStr[i]):
digNum +=1
elif re.match('[a-zA-Z]',tmpStr[i]):
charNum +=1
elif re.match('\s',tmpStr[i]):
spaceNum +=1
else:
otherNum +=1
print "字符:",charNum
print "数字:",digNum
print "空格:",spaceNum
print "其他:",otherNum
splitFunc()
#!/usr/bin/python
# -*- coding: UTF-8 -*- import re
str=raw_input('请输入一串字符:') r1=re.compile('[a-zA-Z]')
r2=re.compile('[0-9]')
print '英文字母的个数为: %d' %len(re.findall(r1,str))
print '数字的个数为: %d' %len(re.findall(r2,str))
print '空格的个数为: %d' %len(re.findall(' ',str))
print '其他字符的个数为: %d' %(len(str)-len(re.findall(r1,str))-len(re.findall(r2,str))-len(re.findall(' ',str)))
python3 参考方法:
#!/usr/bin/env python3 a = str(input("输入一行字符:"))
count1 = 0 #统计英文字母个数
count2 = 0 #统计数字个数
count3 = 0 #统计空格个数
count4 = 0 #统计其他字符
for i in range(len(a)): #利用字符在ASCII码中的位置逐个统计
if("0" <= a[i] <= "9"):
count2 += 1
elif("A" <= a[i] <= "Z" or "a" <= a[i] <= "z"):
count1 += 1
elif(a[i] == " "):
count3 += 1
count4 = len(a) - count1 - count2 - count3
print("英文字母有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个\n"%(count1,count2,count3,count4))
使用匿名函数 lambda:
#!/usr/bin/python
# -*- coding: UTF-8 -*- s = raw_input('请输入一个字符串:\n')
print "开始统计..."
list = [0, 0, 0, 0]
temp = [lambda i : 1 if (i.isalpha()) else 0, lambda i : 1 if (i.isspace()) else 0, lambda i : 1 if (i.isdigit()) else 0]
for i in s:
list[0] += temp[0](i) # 字母
list[1] += temp[1](i) # 空格
list[2] += temp[2](i) # 数字
list[3] = len(s) - list[0] - list[1] - list[2] # 特殊字符 print list
用 decode() 解码可以统计中文个数,utf-8 下一个中文占 3 位:
# encoding:utf-8 import re '''因为中文字符占用长度不是1,用len()方法无法识别中文个数
'''
#答案方法
str = raw_input('请输入一行字符:')
str = str.decode('utf-8') # 解码成 unicode 类型,在 unicode 类型中,汉字占一位
word = 0
num = 0
space = 0
other = 0
for i in str:
if re.match(r'\d', i):
num += 1
elif re.match(r'\w', i) and not re.match(r'\d', i):
word += 1
elif re.match(' ', i):
space += 1
else:
other += 1
print '字母个数为:', word
print '数字个数为:', num
print '空格个数为:', space
print '其他字符个数:', other
Python3 测试,可以统计中文:
#!/usr/bin/python3 #输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#不能有效区分汉字。。。好像没有特定识别汉字的通用表达\s这样的#4E00~9FFFh 是中文的数字区域
import re
s = input('输入一串字符:')
char = re.findall(r'[a-zA-Z]',s)
num = re.findall(r'[0-9]',s)
blank = re.findall(r' ',s)
chi = re.findall(r'[\u4E00-\u9FFF]',s)
other = len(s)-len(char)-len(num)-len(blank)-len(chi)
print("字母:", len(char),"\n数字:", len(num),"\n空格:",len(blank),"\n中文:",len(chi),"\n其他:",other)
#!/usr/bin/env python
# -*- coding:utf-8 -*- s ='12 3 45 & *?.;hGGK L67890' dic = {'letter':0,'integer':0,'space':0,'other':0}
for i in s:
if i>'a' and i<'z' or i>'A' and i<'Z':
dic['letter'] += 1
elif i in '0123456789':
dic['integer'] += 1
elif i == ' ':
dic['space'] += 1
else:
dic['other'] += 1
print dic
这个小例子就比较实用了,如果感觉不错的话,请多多点赞支持吧。。。
原文链接:https://blog.csdn.net/luyaran/article/details/80050697
python2.7练习小例子(十六)的更多相关文章
- python2.7练习小例子(六)
6):题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. ...
- python2.7练习小例子(二十九)
29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...
- python2.7练习小例子(十二)
12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...
- python2.7练习小例子(十)
10):古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:兔子的规律为数列1,1 ...
- python2.7练习小例子(二十八)
28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...
- python2.7练习小例子(二十四)
24):1.题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...
- python2.7练习小例子(十八)
19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- ...
- python2.7练习小例子(十五)
15):题目:输出指定格式的日期. 程序分析:使用 datetime 模块. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
- python2.7练习小例子(八)
8):题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列. 程序源代码: #!/usr/bin/python # -*- coding: ...
随机推荐
- docker-day1-安装和基本使用
Docker 1.什么是docker Docker 是一个开源项目,可以实现轻量级的操作系统虚拟化解决方案. Docker 的基础是 Linux 容器(LXC)等技术.在 LXC 的基础上 Docke ...
- Java传引用问题
Java传引用问题 使用Java调用方法时,可以传值,也可以传引用.下面说说两者的区别: 1.传值 传值中的"值"类型是指java的8大基本类型(基础知识,不知道 ...
- Jmeter入门11 使用Simple Controller组织接口测试用例
接口测试实践中,可以使用Simple Controller来组织测试用例. 官网上说该控制器的主要用途用来组织采样器和其他的逻辑控制器等. 以下为一个接口测试项目结构示例: 1 测试计划 >添加 ...
- python_列表/元组/元组列表以及如何使用
1.list是处理一组有序项目的数据结构 #定义一个列表 list=[1,2,3] print type(list) print list[0] 输出: <type 'list'> 1 2 ...
- SSH 学习记录及在SSH模式下使用XShell连接服务器
传统的网络服务程序,如rsh.FTP.POP和Telnet其本质上都是不安全的:因为它们在网络上用明文传送数据.用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击 ...
- mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
最近用.net mvc做一个网站 我想在mvc中直接访问一个 .html页面 怎么设置一下啊 现在直接访问是404不让访问的 放到view文件夹外面...
- 关于APIT定位算法的讨论
关于APIT定位算法的讨论 [摘要] 无线传感器网络节点定位机制的研究中,基于距离无关的定位技术得到快速发展,其中基于重叠区域的APIT定位技术在实际环境中的定位精度高,被广泛研究和应用. [关键 ...
- 【洛谷P1083】[NOIP2012]借教室
借教室 [题目描述] 在n天中每天有一个可以借出的教室数,有m个订单,每个订单从第l天到第r天要借用x个教室.问能否满足所有的订单,若不能,输出第一个不能满足的订单编号. 思路: 1.1 ≤ n,m ...
- Android学习笔记_76_AsyncQueryHandler的应用
研究AsyncQueryHandler这个类的时候遇到了几个重要的不清楚的知识点 1. Handler与Thread,Looper的关系 2. HandlerThread是干什么用的 3. Threa ...
- unity3D引擎:2D游戏自动瞄准算法实现
转:http://blog.csdn.net/naitu/article/details/39555373 在很多飞行射击类游戏里,都有敌人向玩家自动瞄准并开火的功能.在这里本人用unity3D引擎新 ...