第二十课课后作业
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 没有弄明白,求指导 i 是从 0 ~ length-1 的,我们不想打印 '第 0 个字符串',就要将 i 加 1,使其变成 '第 1 个字符串'。 zltzlt 发表于 2020-1-15 21:16
i 是从 0 ~ length-1 的,我们不想打印 '第 0 个字符串',就要将 i 加 1,使其变成 '第 1 个字符串'。
不好意思,我没有表达清楚我的问题,我是没有弄懂第()个字符串与 i 之间的关系 yjptx121 发表于 2020-1-15 21:29
不好意思,我没有表达清楚我的问题,我是没有弄懂第()个字符串与 i 之间的关系
假如是第 1 个字符串,则 i 为 0;是第 2 个字符串,则 i 为 1;是第 3 个字符串,则 i 为 3 …… 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: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') jackz007 发表于 2020-1-15 22:15
代码这么写似乎更加 Pythonic 一些。
又学到新知识了哈{:5_109:}
页:
[1]