鱼C论坛

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

[已解决]python函数课后作业

[复制链接]
发表于 2020-3-27 22:24:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 hhjdsd 于 2020-3-27 22:26 编辑

动动手的第一题,我想半天也没有思路,求各位大佬给个思路。。
问题如下:
1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
最佳答案
2020-3-28 10:41:44
本帖最后由 sunrise085 于 2020-3-28 10:55 编辑
hhjdsd 发表于 2020-3-28 10:00
主要我还是想问一下怎么才能在判断完第一个字符串后转到第二个字符串


我给你写的那个你运行一下就知道了,i就是每一个字符串啊
你把判断字符串的程序放在我的这个for循环内,i就是要判断的字符串,每次for循环判断一个字符串
若你还是不知道怎么写,给你打个样。
先判断一种,其他的你自己添加吧
def fun(*arg):
    num=0
    for i in arg:
        al=0
        el=0
        num+=1
        for j in i:
            if j.isalpha():
                al+=1
            else:
                el+=1
        print("第%d个字符串有%d个字母,%d个其他字符."%(num,al,el))

fun('we are family.','pytho\nn123 @haha. com','hhjdsd21 er4%^r')
1]QYHQ$_ABD$`1D[8@P(MH7.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 22:35:43 | 显示全部楼层
你问的是函数传参的思路还是实现函数的思路?

给你说一个思路,具体实现就不帮你写了,否则你无法锻炼编程能力

关于传参
用可变参数啊,可变参数是将所有的参数打包成一个元组
def fun(*arg):
    for i in arg:
        print(i)

fun('we are family.','python123 @haha. com','hhjdsd21 er4%^r')
关于函数实现分类统计
在刚才的循环内再加一层循环,遍历传入的每个参数,判断各个字符属于哪一类,就将对应的计数变量+1,这样就统计出来每一类字符的数量了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 22:52:26 | 显示全部楼层
楼上 说的 很好 ,楼主 ,建议您 看下 ord()函数 ,还能区分 字母的大小写 呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 23:04:40 | 显示全部楼层
2楼和3楼都答得差不多了,2楼说的很好,思路可以看看2楼,关于3楼我补充一点, ord() 函数就是获取字符的 ASCII 码,可以用此判断元素是否为某种类型的字符。
关于判断数字建议参考:字符串的方法及注释

参考2楼的思路去实现,就看你怎么把思路换成代码了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 10:00:58 | 显示全部楼层
sunrise085 发表于 2020-3-27 22:35
你问的是函数传参的思路还是实现函数的思路?

给你说一个思路,具体实现就不帮你写了,否则你无法锻炼编 ...

主要我还是想问一下怎么才能在判断完第一个字符串后转到第二个字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 10:41:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-3-28 10:55 编辑
hhjdsd 发表于 2020-3-28 10:00
主要我还是想问一下怎么才能在判断完第一个字符串后转到第二个字符串


我给你写的那个你运行一下就知道了,i就是每一个字符串啊
你把判断字符串的程序放在我的这个for循环内,i就是要判断的字符串,每次for循环判断一个字符串
若你还是不知道怎么写,给你打个样。
先判断一种,其他的你自己添加吧
def fun(*arg):
    num=0
    for i in arg:
        al=0
        el=0
        num+=1
        for j in i:
            if j.isalpha():
                al+=1
            else:
                el+=1
        print("第%d个字符串有%d个字母,%d个其他字符."%(num,al,el))

fun('we are family.','pytho\nn123 @haha. com','hhjdsd21 er4%^r')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 11:07:56 | 显示全部楼层
sunrise085 发表于 2020-3-28 10:41
我给你写的那个你运行一下就知道了,i就是每一个字符串啊
你把判断字符串的程序放在我的这个for循环内 ...


我的意思是怎么样才能在打印完第一个字符串所包含的字母时转到第二个字符串,然后再打其所包含的字符串。我自己想出来的代码要不就只打印第一个字符串的,要不就打印全部的。
>>> def function1(*arg):
        count1 = 1
        kongge = 0
        shuzi = 0
        zimu = 0
        qita = 0
        for w in arg:
                for i in w:
                        if i == ' ':
                                kongge += 1
                        elif i in '123456789':
                                shuzi += 1
                        elif i in 'qwertyuioplkjhgfdsazxcvbnmZXCVBNMLKJHGFDSAQWERTYUIOP':
                                zimu += 1
                        else:
                                qita += 1
        print('第',count1,'个字符串共有:英文字母',zimu,'个,数字',shuzi,'个,空格',kongge,'个,其他字符',qita,'个。')

        
>>> function1('hhjdsd','I love FishC.com')
第 1 个字符串共有:英文字母 19 个,数字 0 个,空格 2 个,其他字符 1 个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 11:09:32 | 显示全部楼层
想到原地爆炸
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 11:14:54 | 显示全部楼层
hhjdsd 发表于 2020-3-28 11:07
我的意思是怎么样才能在打印完第一个字符串所包含的字母时转到第二个字符串,然后再打其所包含的字符串 ...


你的程序,给几个计数变量赋初值的位置不对;
函数中print的缩进不对,
你和我在六楼写的对照一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-28 14:24:10 | 显示全部楼层
sunrise085 发表于 2020-3-28 11:14
你的程序,给几个计数变量赋初值的位置不对;
函数中print的缩进不对,
你和我在六楼写的对照一下

多谢大佬,终于成功了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-25 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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