hhjdsd 发表于 2020-3-27 22:24:57

python函数课后作业

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

动动手的第一题,我想半天也没有思路,求各位大佬给个思路。。
问题如下:
1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。

sunrise085 发表于 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,这样就统计出来每一类字符的数量了

xiangjianshinan 发表于 2020-3-27 22:52:26

楼上 说的 很好 ,楼主 ,建议您 看下 ord()函数 ,还能区分 字母的大小写 呢。

yexing 发表于 2020-3-27 23:04:40

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

参考2楼的思路去实现,就看你怎么把思路换成代码了。

hhjdsd 发表于 2020-3-28 10:00:58

sunrise085 发表于 2020-3-27 22:35
你问的是函数传参的思路还是实现函数的思路?

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

主要我还是想问一下怎么才能在判断完第一个字符串后转到第二个字符串

sunrise085 发表于 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')

hhjdsd 发表于 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 个。

hhjdsd 发表于 2020-3-28 11:09:32

想到原地爆炸{:10_266:}

sunrise085 发表于 2020-3-28 11:14:54

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

你的程序,给几个计数变量赋初值的位置不对;
函数中print的缩进不对,
你和我在六楼写的对照一下

hhjdsd 发表于 2020-3-28 14:24:10

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

多谢大佬,终于成功了{:10_266:}{:10_266:}
页: [1]
查看完整版本: python函数课后作业