|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Peteryo01223 于 2021-1-11 14:59 编辑
原题目:
编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
标准答案:
- def count(*param):
- length = len(param)
- for i in range(length):
- letters = 0
- space = 0
- digit = 0
- others = 0
- for each in param[i]:
- if each.isalpha():
- letters += 1
- elif each.isdigit():
- digit += 1
- elif each == ' ':
- space += 1
- else:
- others += 1
- print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
-
- count('I love fishc.com.', 'I love you, you love me.')
复制代码
我的问题:
在第 17 行的 print 语句中,python 为什么能够通过 i+1 这个表达,就顺利地在结果中打印出 1 2 3...?
我的理解是:在第 3 行code中,for i in range(length):,这个 i 是param中的循环次数,一个不确定,但很可能挺大的一个数字。
谢谢。
本帖最后由 昨非 于 2021-1-11 15:11 编辑
- def count(*param): #传入字符串
- length = len(param) #取参数长度(一共多少个字符串)
- for i in range(length): #for循环,i的取值依次为:0,1,....一直到length-1,刚好可以作为索引值访问每个参数(每个字符串)
- letters = 0
- space = 0
- digit = 0
- others = 0
- for each in param[i]: #每次循环,i的值依次增加,对应的each就是第i个参数的各个字符
- if each.isalpha(): #分门别类计数
- letters += 1
- elif each.isdigit():
- digit += 1
- elif each == ' ':
- space += 1
- else:
- others += 1
- print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
- #输出第i个参数的统计结果
-
- count('I love fishc.com.', 'I love you, you love me.')
复制代码
需要注意的是:外层for循环对应遍历各个参数(参数中不止一个字符串),
内层for循环遍历每个参数(每个字符串)的各个字符,然后分开统计
最后print属于外层循环,每次的打印值对应每个参数(字符串)的统计结果
至于i+1的问题:
i依次取值0,1....一直到length-1,是作为第i+1个参数(字符串)的索引值出现的
(i从零开始取值,但习惯上计数从一开始,所以会有个+1)
|
|