A.Lyapunov 发表于 2020-7-8 17:29:00

函数中的return

想要统计多个字符串,可是这段程序只统计了第一个字符串,是因为return只能返回一个值,for循环里面执行到return就会跳出循环吗?求解答,谢谢!
def count(*paragraph):
    length = len(paragraph)
    for i in range(length):
      alphabet = 0
      numbers = 0
      space = 0
      others = 0
      for each in paragraph:
            if each.isalpha():
                alphabet += 1
            elif each.isdigit():
                numbers += 1
            elif each == ' ':
                space += 1
            else:
                others += 1

      return('第 %d 个字符共有:英文字母 %d 个, 数字 %d 个,空格 %d 个, 其他字符 %d 个' % (i+1, alphabet, numbers, space, others))
print(count('I love fishc.com.', 'I love you, you love me.'))

Twilight6 发表于 2020-7-8 17:30:19

本帖最后由 Twilight6 于 2020-7-8 17:39 编辑



for循环里面执行到return就会跳出循环吗?

是的 ,函数内一遇到 return 这个函数就运行完毕了,一个函数最主要的作用就是得到返回值,所以一遇到 return 这个函数的使命就完成了

你学到后面可以用 yield 生成器,一次一次的将返回值返回出来

这里的 return 移动到for 循环外即可了
def count(*paragraph):
    length = len(paragraph)
    for i in range(length):
      alphabet = 0
      numbers = 0
      space = 0
      others = 0
      for each in paragraph:
            if each.isalpha():
                alphabet += 1
            elif each.isdigit():
                numbers += 1
            elif each == ' ':
                space += 1
            else:
                others += 1

    return('第 %d 个字符共有:英文字母 %d 个, 数字 %d 个,空格 %d 个, 其他字符 %d 个' % (i+1, alphabet, numbers, space, others))
print(count('I love fishc.com.', 'I love you, you love me.'))

qiuyouzhi 发表于 2020-7-8 17:31:00

是的,只要return了,函数就结束了。

青出于蓝 发表于 2020-7-8 17:31:27

return是for循环外的啊
for循环把所有字符种类及其数量都统计后,返回的结果呀
没大看懂疑问,原谅我的语文{:10_266:}

A.Lyapunov 发表于 2020-7-8 19:59:37

Twilight6 发表于 2020-7-8 17:30
是的 ,函数内一遇到 return 这个函数就运行完毕了,一个函数最主要的作用就是得到返回值,所以一 ...

移到for循环外面,就不能统计第一个字符串了,return返回的值就是统计的第二个字符串。这样还是没有满足要求。谢谢

Twilight6 发表于 2020-7-8 20:01:56

A.Lyapunov 发表于 2020-7-8 19:59
移到for循环外面,就不能统计第一个字符串了,return返回的值就是统计的第二个字符串。这样还是没有满足 ...


def count(*paragraph):
    length = len(paragraph)
    for i in range(length):
      alphabet = 0
      numbers = 0
      space = 0
      others = 0
      for each in paragraph:
            if each.isalpha():
                alphabet += 1
            elif each.isdigit():
                numbers += 1
            elif each == ' ':
                space += 1
            else:
                others += 1
      print('第 %d 个字符共有:英文字母 %d 个, 数字 %d 个,空格 %d 个, 其他字符 %d 个' % (i+1, alphabet, numbers, space, others))


count('I love fishc.com.', 'I love you, you love me.')
页: [1]
查看完整版本: 函数中的return