鱼C论坛

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

[已解决]19讲字符串的计算统计,两个函数的方式怎么用

[复制链接]
发表于 2022-10-12 02:31:12 | 显示全部楼层 |阅读模式

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

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

x
def count(*params):
    le = len(params)
    cs = 1
    for each1 in params[le - 1]:
        print('第 %d 个字符串中有:'%cs)
        cs += 1
        print(js(each1))


def js(*params):
    params = str(params)
    yw = 0
    sz = 0
    kg = 0
    qt = 0
    for each2 in params:
        if each2.isalpha:
            yw += 1
        elif each2.isdigit:
            sz += 1
        elif each2 == '\t':
            kg += 1
        else:
            qt += 1
    print('英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。'%(yw,sz,kg,qt))


print(count('wo ai cff 1314,enen','ha hah,111'))
最佳答案
2022-10-12 22:17:29
本帖最后由 jackz007 于 2022-10-12 22:22 编辑
必须学好编程 发表于 2022-10-12 21:46
没有啊,你运行下试试,我这个程序应该是第一个定义count的时候的for循环语句有问题答案看了,比 ...

def count(* params):
    for each1 in range(len(params)):
        print('第 %d 个字符串中有:' % (each1 + 1))
        js(params[each1])                      # 函数无返回值,不可作为 print() 的参数

def js(params) :
    yw = sz = kg = qt = 0
    for each2 in params:
        if each2 . isalpha()   : yw += 1       # isalpha() 缺括号
        elif each2 . isdigit() : sz += 1       # isdigit() 缺括号
        elif each2 == ' '      : kg += 1
        else                   : qt += 1
    print('英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。'%(yw,sz,kg,qt))

count('wo ai cff 1314,enen','ha hah,111')      # 函数无返回值,不可作为 print() 的参数
        运行实况:
D:\[00.Exerciese.2022]\Python>python xs.py
第 1 个字符串中有:
英文字母 11 个,数字 4 个,空格 3 个,其他字符 1 个。
第 2 个字符串中有:
英文字母 5 个,数字 3 个,空格 1 个,其他字符 1 个。

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-12 08:29:45 | 显示全部楼层
       你这个代码不是已经工作得很好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-12 21:46:28 | 显示全部楼层
jackz007 发表于 2022-10-12 08:29
你这个代码不是已经工作得很好了吗?

没有啊,你运行下试试,我这个程序应该是第一个定义count的时候的for循环语句有问题答案看了,比我的简单多了,但是还是想按我这个思路走下来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-12 22:17:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-12 22:22 编辑
必须学好编程 发表于 2022-10-12 21:46
没有啊,你运行下试试,我这个程序应该是第一个定义count的时候的for循环语句有问题答案看了,比 ...

def count(* params):
    for each1 in range(len(params)):
        print('第 %d 个字符串中有:' % (each1 + 1))
        js(params[each1])                      # 函数无返回值,不可作为 print() 的参数

def js(params) :
    yw = sz = kg = qt = 0
    for each2 in params:
        if each2 . isalpha()   : yw += 1       # isalpha() 缺括号
        elif each2 . isdigit() : sz += 1       # isdigit() 缺括号
        elif each2 == ' '      : kg += 1
        else                   : qt += 1
    print('英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。'%(yw,sz,kg,qt))

count('wo ai cff 1314,enen','ha hah,111')      # 函数无返回值,不可作为 print() 的参数
        运行实况:
D:\[00.Exerciese.2022]\Python>python xs.py
第 1 个字符串中有:
英文字母 11 个,数字 4 个,空格 3 个,其他字符 1 个。
第 2 个字符串中有:
英文字母 5 个,数字 3 个,空格 1 个,其他字符 1 个。

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-10-13 21:47:44 | 显示全部楼层
谢谢大佬,就是最后这个print的用法没太明白,为啥这个里面最后一步不能用print

def palindrome(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list(list2):
        return '是回文联!'
    else:
        return '不是回文联!'
print(palindrome('上海自来水来自海上'))

这个里面就可以用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-14 08:05:51 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-10-14 08:15 编辑
必须学好编程 发表于 2022-10-13 21:47
谢谢大佬,就是最后这个print的用法没太明白,为啥这个里面最后一步不能用print

def palindrome(string) ...


     如果把函数放在 print() 里面调用,那就是需要打印函数的返回值,可是,这两个函数都没有返回值,就是说,没有 return 语句,最后的执行结果,会输出一个 None。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-14 15:49:55 | 显示全部楼层

请问下大佬,如果要把这两个函数用return返回,而不是用print输出
这个要怎么实现呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-14 16:14:09 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-14 16:22 编辑
迦勒底的doctor 发表于 2022-10-14 15:49
请问下大佬,如果要把这两个函数用return返回,而不是用print输出
这个要怎么实现呢

def count(* params):
    return [js(params[i]) for i in range(len(params))]    # 返回包含元组的列表,元组个数是 params 中字符串的个数,元组的内容是对该字符串的统计结果。 

def js(params) :
    yw = sz = kg = qt = 0
    for each2 in params:
        if each2 . isalpha()   : yw += 1
        elif each2 . isdigit() : sz += 1
        elif each2 == ' '      : kg += 1
        else                   : qt += 1
    return yw , sz , kg , qt                              # 返回字符串 params 中,各种字符的统计结果

x = count('wo ai cff 1314,enen' , 'ha hah , 111')
for k in range(len(x)) :
    print('第 %d 个字符串中有:' % (k + 1))
    print('英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (x[k][0] , x[k][1] , x[k][2] , x[k][3]))
        函数的角色应该是 "哑巴" ,只负责加工信息,数据的获取和输出由主函数来做,有了这些东西,接下来该干什么,以及应该怎么干,由主程序来做决定,就好比我们人类,组织分工要有层次,老板们只负责决策和表面上的事情,力气活统统归马仔。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2022-10-14 23:41:28 | 显示全部楼层
jackz007 发表于 2022-10-14 16:14
函数的角色应该是 "哑巴" ,只负责加工信息,数据的获取和输出由主函数来做,有了这些东西, ...

谢谢大牛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-15 20:42:01 | 显示全部楼层
jackz007 发表于 2022-10-14 16:14
函数的角色应该是 "哑巴" ,只负责加工信息,数据的获取和输出由主函数来做,有了这些东西, ...

万分感谢
您的代码,我好几遍,才算是理解了小甲鱼视频里面的一些用法
非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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