鱼C论坛

 找回密码
 立即注册
查看: 2195|回复: 12

[已解决]关于for循环的一个问题

[复制链接]
发表于 2017-5-15 07:50:48 | 显示全部楼层 |阅读模式

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

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

x
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.')

这是19讲的课后作业,但是这一个地方没明白  for each in param[i]:,想请问一下,为什么要用[i]列表呢,我试了下其他的都要报错,是因为i是一个变量,需要从param不断提取吗?

非常感谢
最佳答案
2017-5-16 09:59:07
liaozhenghao 发表于 2017-5-16 09:14
是的= =我就是不是很明白为啥需要中括号,哭

这就好比问:为什么做加法运算要用到+ 一样的感觉

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-15 08:16:21 | 显示全部楼层
当你令a=('I love fishc.com.', 'I love you, you love me.')时
>>> a=('I love fishc.com.', 'I love you, you love me.')
>>> a[0]
'I love fishc.com.'
>>> a[1]
'I love you, you love me.'
也就是说这个[i]起到的是一个切片的作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 09:51:54 | 显示全部楼层
额,因为你输入了两个字符串

遍历第一个字符串的时候取 param[0]

遍历第二个字符串的时候取 param[1]

没毛病
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 09:52:13 | 显示全部楼层
你把param看做一个数组,那么[i]不就相当于下标吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-15 15:50:42 | 显示全部楼层
zlj19931010 发表于 2017-5-15 09:51
额,因为你输入了两个字符串

遍历第一个字符串的时候取 param[0]

但是我自己写的时候,我改成了一个字符串,我把改成了(i)还是报错呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 16:03:30 | 显示全部楼层
liaozhenghao 发表于 2017-5-15 15:50
但是我自己写的时候,我改成了一个字符串,我把改成了(i)还是报错呢


你把错误的代码贴出来

一个字符串我这里也行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-15 22:09:44 | 显示全部楼层
zlj19931010 发表于 2017-5-15 16:03
你把错误的代码贴出来

一个字符串我这里也行啊

def lalala(*parm):
    length = len(parm)
    for i in range(length):
        a = 0 #a是字母
        b = 0 #b是数字
        c = 0 #c是空格
        d = 0 #d是其他
        for each in parm(i):
            if each.isalpha():
                a += 1
            elif each.isdigit():
                b += 1
            elif each == (' '):
                c += 1
            else:
                d += 1
        print('有%d个字符串共有,%d个字母,%d个数字,%d个空格,%d个其他。'%(i+1,a,b,c,d))
lalala('我 love 宝贝 1314')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 22:42:50 | 显示全部楼层
liaozhenghao 发表于 2017-5-15 22:09
def lalala(*parm):
    length = len(parm)
    for i in range(length):


for each in parm(i)这个索引不是应该用 中括号么?  

for each in parm [ i ] 这样吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-15 22:51:48 | 显示全部楼层
字符串也是序列,你这比对的是每一个字母,就是从序列里面一个个的取。 [i] 是在序列里面的位置数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 09:14:03 | 显示全部楼层
西殴 发表于 2017-5-15 22:42
for each in parm(i)这个索引不是应该用 中括号么?  

for each in parm [ i ] 这样吧

是的= =我就是不是很明白为啥需要中括号,哭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-16 09:59:07 | 显示全部楼层    本楼为最佳答案   
liaozhenghao 发表于 2017-5-16 09:14
是的= =我就是不是很明白为啥需要中括号,哭

这就好比问:为什么做加法运算要用到+ 一样的感觉

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-16 14:56:03 | 显示全部楼层
zlj19931010 发表于 2017-5-16 09:59
这就好比问:为什么做加法运算要用到+ 一样的感觉

你这么说,我突然就懂了,最佳送你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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