第19课:小问题,关于 i 和 i+1
本帖最后由 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:
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中的循环次数,一个不确定,但很可能挺大的一个数字。
谢谢。
本帖最后由 Peteryo01223 于 2021-1-11 15:08 编辑
突然发现这个问题,我问过。。。sorry 我看了一下9月22日某高手的回答,还是想不起来,怎么回事儿了。
某高手上次回答时,说:
for i in range(length):
# 外层循环,循环次数就是传进来的字符串个数
for each in param :
# param就是第i个字符串,当i为0的时候,就是字符串'I love fishc.com',当i为2的时候就是字符串'There is a beautiful day'
问题:这两句话里的 i,明明不一样,怎们都是 i 呢?
本帖最后由 昨非 于 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的值依次增加,对应的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)
昨非 发表于 2021-1-11 15:02
需要注意的是:外层for循环对应遍历各个参数(参数中不止一个字符串),
内层for循环遍历每个参数(每 ...
好的,重复看了上次高手的注解,和你的注解,我好像懂了!谢谢 你的回复触发了审核机制
再通过之前我是看不到的
页:
[1]