yjptx121 发表于 2020-1-15 21:15:23

第二十课课后作业

def count(*param):
    length = len(param)
    for i in range(length):
      word = 0
      num = 0
      spa = 0
      oth = 0
      for j in param:
            if j.isalpha():
                word += 1
            elif j.isspace():
                spa += 1
            elif j.isdigit():
                num += 1
            else:
                oth += 1
      print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个'
               % (i + 1, word, num, spa, oth))

count('I love fish.com 123', 'I love you', 'you love 123')

我就最后一个:第 %d 个字符串格式化后为什么是i+1 没有弄明白,求指导

zltzlt 发表于 2020-1-15 21:16:25

i 是从 0 ~ length-1 的,我们不想打印 '第 0 个字符串',就要将 i 加 1,使其变成 '第 1 个字符串'。

yjptx121 发表于 2020-1-15 21:29:02

zltzlt 发表于 2020-1-15 21:16
i 是从 0 ~ length-1 的,我们不想打印 '第 0 个字符串',就要将 i 加 1,使其变成 '第 1 个字符串'。

不好意思,我没有表达清楚我的问题,我是没有弄懂第()个字符串与 i 之间的关系

zltzlt 发表于 2020-1-15 21:30:14

yjptx121 发表于 2020-1-15 21:29
不好意思,我没有表达清楚我的问题,我是没有弄懂第()个字符串与 i 之间的关系

假如是第 1 个字符串,则 i 为 0;是第 2 个字符串,则 i 为 1;是第 3 个字符串,则 i 为 3 ……

yjptx121 发表于 2020-1-15 21:40:16

zltzlt 发表于 2020-1-15 21:30
假如是第 1 个字符串,则 i 为 0;是第 2 个字符串,则 i 为 1;是第 3 个字符串,则 i 为 3 ……

我想明白了,请教一下我这样理解对不对,
*param 代表一个不确定长度的参数,length = len(param)的结果实际就是表示了括号中有几个参数(param【0】就表示是第一个参数,param【1】就表示是第二个参数),而 i 是属于range(length),即如果有只有一个参数,那么 i 就是0,如果有两个参数,那么 i = 0,1,以此类推,又因为不确定*param有几个参数,那么如果只有1个参数,count()就会运行一次,如果2个参数,就运行两次,在这个程序中, *param和 length = len(param)是关键

jackz007 发表于 2020-1-15 22:15:52

本帖最后由 jackz007 于 2020-1-15 22:19 编辑

       代码这么写似乎更加 Pythonic 一些。
def count(* param):
    for k in range(len(param)):
      a = sum( if x . isalpha()])
      d = sum( if x . isdigit()])
      b = sum( if x . isspace()])
      o = len(param) - a - d - b
      print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个' % (k , a , d , b , o)      

count('I love fish.com 123' , 'I love you', 'you love 123')

yjptx121 发表于 2020-1-16 21:56:55

jackz007 发表于 2020-1-15 22:15
代码这么写似乎更加 Pythonic 一些。

又学到新知识了哈{:5_109:}
页: [1]
查看完整版本: 第二十课课后作业