鱼C论坛

 找回密码
 立即注册
查看: 1166|回复: 9

[已解决]第十九讲课后作业,for循环有bug,求帮助

[复制链接]
发表于 2018-7-30 00:34:00 | 显示全部楼层 |阅读模式
5鱼币
  1. def shibie(*param):
  2.     space=0
  3.     digit=0
  4.     alpha=0
  5.     others=0
  6.     a=0
  7.     for i in param:
  8.         if i==' ':
  9.             space+=1
  10.         elif i.isdigit():
  11.             digit+=1
  12.         elif i.isalpha():
  13.             alpha+=1
  14.         else:
  15.             others+=1
  16.     print('空格有%d个,字母有%d个,数字有%d个,其他字符有%d个'%(space,alpha,digit,others))
  17. shibie('wo cao ni 555 klkl')
复制代码



本来对for循环就不是特别清楚,我真的不知道这个bug怎么出来的,谢谢各位
最佳答案
2018-7-30 00:34:01
当参数不确定有几个时,用收集参数,即在变量名前加个“*” 星号,可以向函数里传递多个参数,小甲鱼老师的视频里,他传递进去两个字符串所以,用了*params 的形式,你这里只传递了一个参数就没必要使用手机参数
小甲鱼老师的源代码
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.')

'“I love fishc.com”  是一个参数,str1 ="I love fishc.com"
123.png

最佳答案

查看完整内容

当参数不确定有几个时,用收集参数,即在变量名前加个“*” 星号,可以向函数里传递多个参数,小甲鱼老师的视频里,他传递进去两个字符串所以,用了*params 的形式,你这里只传递了一个参数就没必要使用手机参数 小甲鱼老师的源代码 def count(*param): length = len(param) for i in range(length): letters = 0 space = 0 digit = 0 others = 0 for each in param: ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 00:34:01 | 显示全部楼层    本楼为最佳答案   
当参数不确定有几个时,用收集参数,即在变量名前加个“*” 星号,可以向函数里传递多个参数,小甲鱼老师的视频里,他传递进去两个字符串所以,用了*params 的形式,你这里只传递了一个参数就没必要使用手机参数
小甲鱼老师的源代码
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.')

'“I love fishc.com”  是一个参数,str1 ="I love fishc.com"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 02:43:26 | 显示全部楼层
把param前面的那个引号去掉就好了...这样def shibie(param):
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 04:05:00 | 显示全部楼层
去掉函数表示任意个数参数的*号即可。这不是for有bug,而是你使用了任意个数参数,但是调用时却只是输入了一个字符串,这个字符串整体作为了一个参数处理引起的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 08:22:05 | 显示全部楼层
  1. def shibie(param):
  2.     space=0
  3.     digit=0
  4.     alpha=0
  5.     others=0
  6.     a=0
  7.     for i in param:
  8.         if i==' ':
  9.             space+=1
  10.         elif i.isdigit():
  11.             digit+=1
  12.         elif i.isalpha():
  13.             alpha+=1
  14.         else:
  15.             others+=1
  16.     print('空格有%d个,字母有%d个,数字有%d个,其他字符有%d个'%(space,alpha,digit,others))
  17. shibie('wo cao ni 555 klkl')
复制代码

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

使用道具 举报

发表于 2018-7-30 09:20:03 | 显示全部楼层
不要用收集参数,把*去掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 10:08:30 | 显示全部楼层
凌九霄 发表于 2018-7-30 04:05
去掉函数表示任意个数参数的*号即可。这不是for有bug,而是你使用了任意个数参数,但是调用时却只是输入了 ...

兄台,说的对,for循环不能处理多个文本的循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 10:35:23 | 显示全部楼层
郑载序 发表于 2018-7-30 10:08
兄台,说的对,for循环不能处理多个文本的循环。

不是for的问题!你用*argv的话,你迭代的是一个元组,不用*号,同样的调用,你迭代的是一个字符串,显然,你这个需要迭代字符串,所以,不是for有bug,是人是否恰当使用的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-30 10:36:58 | 显示全部楼层
凌九霄 发表于 2018-7-30 10:35
不是for的问题!你用*argv的话,你迭代的是一个元组,不用*号,同样的调用,你迭代的是一个字符串,显然 ...

这题目,好像……(我看到了一些XX的东西)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-3 15:20:52 | 显示全部楼层
谢谢各位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 12:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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