鱼C论坛

 找回密码
 立即注册
查看: 1653|回复: 5

[已解决]函数中的return

[复制链接]
发表于 2020-7-8 17:29:00 | 显示全部楼层 |阅读模式

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

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

x
想要统计多个字符串,可是这段程序只统计了第一个字符串,是因为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[i]:
            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.'))
最佳答案
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[i]:
            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.'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i]:
            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.'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 17:31:00 | 显示全部楼层
是的,只要return了,函数就结束了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 17:31:27 | 显示全部楼层
return是for循环外的啊
for循环把所有字符种类及其数量都统计后,返回的结果呀
没大看懂疑问,原谅我的语文
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

移到for循环外面,就不能统计第一个字符串了,return返回的值就是统计的第二个字符串。这样还是没有满足要求。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i]:
            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.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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