张图南 发表于 2020-7-8 11:46:54

python第19讲课后习题

题目:1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
我的代码如下:
def tongji(str1):
    zimu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    shuzi = '0123456789'
    space = ' '
    others = '+-*/.'
    z = 0
    sz = 0
    sp = 0
    ot = 0
    i = len(str1)
    t = 0
    while t <= i-1:
      if str1 in zimu :
            z += 1
            if str1 in shuzi:
                sz += 1
                if str1 in space:
                  sp += 1
                  if str1 in others:
                        ot += 1
      t += 1
    print('第1个字符串共有:英文字母',z,'个,数字',sz,'个,空格',sp,'个,其他字符',ot,'个')
我输入了这个字符串:I love fishc.com.
问题是只识别出了13个字母,空格和特殊字符都不能识别。问题出在哪?

Twilight6 发表于 2020-7-8 11:48:35



缩进错了:

def tongji(str1):
    zimu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    shuzi = '0123456789'
    space = ' '
    others = '+-*/.'
    z = 0
    sz = 0
    sp = 0
    ot = 0
    i = len(str1)
    t = 0
    while t <= i-1:
      if str1 in zimu :
            z += 1
      if str1 in shuzi:
            sz += 1
      if str1 in space:
            sp += 1
      if str1 in others:
            ot += 1
      t += 1
    print('第1个字符串共有:英文字母',z,'个,数字',sz,'个,空格',sp,'个,其他字符',ot,'个')

heidern0612 发表于 2020-7-8 11:49:35

你的if分支写的不对。

只有在满足 if str1 in zimu :的条件下,才进入判断if str1 in shuzi:。

这种不应该是从属关系,而应该是并列关系。

张图南 发表于 2020-7-8 12:02:46

heidern0612 发表于 2020-7-8 11:49
你的if分支写的不对。

只有在满足 if str1 in zimu :的条件下,才进入判断if str1 in shuzi:。


感谢{:5_106:}
页: [1]
查看完整版本: python第19讲课后习题