鱼C论坛

 找回密码
 立即注册
查看: 1035|回复: 4

[已解决]输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

[复制链接]
发表于 2018-8-19 23:45:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
string = input('请输入一行字符:')
length = len(string)
al = 0
space = 0
num = 0
other = 0
for i in range(length):
    if string[i].isalpha():
        al += 1
    elif string[i].isspace():
        space += 1
    elif string[i].isdigit():
        num += 1
    else:
        other += 1
print('所有字符分别为:')
print('%d个英文字母,%d个空格,%d个数字,%d个其它字符。' %(al, space, num, other))

结果如下:
请输入一行字符:I'm StoneMonkey, I love my mather.我爱鱼C
所有字符分别为:
30个英文字母,5个空格,0个数字,3个其它字符。

疑问:汉字也被统计为英文字符了,奇怪了
最佳答案
2018-8-19 23:56:30
if string[i].isalpha() and ord(string[i]) < 256:   #转成 ascii 码,并限制在 ascii 表的256个元素内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-19 23:56:30 | 显示全部楼层    本楼为最佳答案   
if string[i].isalpha() and ord(string[i]) < 256:   #转成 ascii 码,并限制在 ascii 表的256个元素内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 00:04:12 | 显示全部楼层
claws0n 发表于 2018-8-19 23:56
if string.isalpha() and ord(string) < 256:   #转成 ascii 码,并限制在 ascii 表的256个元素内


谢谢大神!已解决。
可是isalpha()方法的含义是:“如果字符串至少有一个字符并且所有字符都是字母则返回Ture,否则返回Flase”
汉字也会被认做字母吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-20 00:24:25 | 显示全部楼层
stone1005 发表于 2018-8-20 00:04
谢谢大神!已解决。
可是isalpha()方法的含义是:“如果字符串至少有一个字符并且所有字符都是字母则 ...


我找到的是在一个字符串里,所有的字符都是字母,不管大小写,返回 True。这是函数的描述
我的推测,因为 '我'.isalpha() == True:
如果自己写一个类似的函数,按照最简单的写法应该是排除 ascii 对应数字的那几个号码而已。开发团队都是英语为主的,不会去管那么多了,要就用英文打代码
因此,我们自己可以做出小小的改善,把范围缩小就可以了~~

团队里,我是最弱的~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 23:06:02 | 显示全部楼层
claws0n 发表于 2018-8-20 00:24
我找到的是在一个字符串里,所有的字符都是字母,不管大小写,返回 True。这是函数的描述
...

简单明了,浅显易懂,真不愧是大神。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 17:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表