1 问题描述
试用Python代码,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 比如输入:123 45,abc/de 12/3dsf
输出:在您输入的字符串中,英文字母的个数为8,空格的个数为2,数字的个数为8,其他字符的个数为3
默认输入字符串中不包含汉字
2 解题思路
统计数量,需要使用累加
可以使用if或while函数,满足条件则数量加一
对于英文、空格以及数字的判断,可以使用大小比较
字符串中每个字符都需要判断,可以使用for循环
判断字符串中的字符,可以使用字符串自带的函数
3 解题方法
方法一
begin=input('请输入字符串:') engnum=spanum=dignum=elnum=0 for i in begin: if i>='a' and i<='z' or i>='A' and i<='Z': engnum+=1 elif i==" ": spanum+=1 elif i in '0123456789': dignum+=1 else: elnum+=1 print('在您输入的字符串中,英文字母的个数为{},空格的个数为{},数字的个数为{},其他字符的个数为{}'.format(engnum,spanum,dignum,elnum))
第1行: 用input函数请用户输入一个字符串,并赋值给变量begin
第2行: 给变量engnum、spanum、dignum、elnum都赋值为0,表示英文字母、空格、数字、其他字符初始值均为0
第3行: 用for循环遍历字符串中所有字符
第4-5行: 判断字符i是否为英文字母,如果是,engnum数量加一,如果不是,跳转到第六行
第6-7行: 判断字符i是否为空格,如果是,spanum数量加一,如果不是,跳转到第八行
第8-9行: 判断字符i是否为数字,如果是,dignum数量加一,如果不是,跳转到第十行
第10-11行: 对于既不是英文字母,又不是空格,也不是数字的字符,算作其他字符,elnum数量加一
第12行: 用print函数打印a的阶乘结果
该方法用到了format()函数,简单介绍一下:
format()函数
format() 函数是一种格式化字符串的函数,类似于f-string的方法格式化字符串
format() 函数可以接受不限个参数,位置可以不按顺序
语法:
str.format()
例如:
"{} {}".format("hello", "world")等价于"hello world"
"{1} {0} {1}".format("hello", "world")等价于"world hello world"
{}中的数字可以设置指定位置
方法二
begin = input('请输入字符串:') engnum = spanum = dignum = elnum = 0 for i in begin: if i.isalpha(): engnum +=1 elif i.isspace(): spanum +=1 elif i.isnumeric(): dignum +=1 else: elnum +=1 print(f'在您输入的字符串中,英文字母的个数为{engnum},空格的个数为{spanum},数字的个数为{dignum},其他字符的个数为{elnum}')View Code
第1行: 用input函数请用户输入一个字符串,并赋值给变量begin
第2行: 给变量engnum、spanum、dignum、elnum都赋值为0,表示英文字母、空格、数字、其他字符初始值均为0
第3行: 用for循环遍历字符串中所有字符
第4-5行: 判断字符i是否为英文字母,如果是,engnum数量加一,如果不是,跳转到第六行(isalpha()
第6-7行: 判断字符i是否为空格,如果是,spanum数量加一,如果不是,跳转到第八行
第8-9行: 判断字符i是否为数字,如果是,dignum数量加一,如果不是,跳转到第十行
第10-11行: 对于既不是英文字母,又不是空格,也不是数字的字符,算作其他字符,elnum数量加一
第12行: 用print函数打印a的阶乘结果
该方法用到了isalpha()、isnumeric()和isspace()函数,简单介绍一下:
isalpha()函数、isnumeric()函数和isspace()函数
isalpha() 方法检测字符串是否只由字母组成
isnumeric()方法检测字符串是否只由数字组成
isspace()方法检测字符串是否只由空格组成
语法:
str.isalpha()、str.isnumeric()、str.isspace()
如果字符串至少有一个字符并且所有字符都是字母/数字/空格则返回 True,否则返回 False。
方法一、方法二代码运行结果均为: