3216207773 发表于 2020-9-13 15:27:43

question

def count(x):
    a = len(list(x))
    letter=0
    numb=0
    space=0
    other=0
    while a+1:
      if list(x).isalpha():
            letter+=1
      
      elif list(x).isdigit():
            
            numb+=1
            
      elif list(x).isspace():
            space+=1
            
      else:
            other+=1
      a-=1
      
      print('字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (letter, numb, space, other))
count('i love fishc.com')
#为什么运行不了?

kylin121380 发表于 2020-9-13 15:30:05

def count(x):
    a = len(list(x))
    letter = 0
    numb = 0
    space = 0
    other = 0
    while a + 1:
      if list(x).isalpha():
            letter += 1

      elif list(x).isdigit():

            numb += 1

      elif list(x).isspace():
            space += 1

      else:
            other += 1
      a -= 1

      print('字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (letter, numb, space, other))


count('i love fishc.com')

昨非 发表于 2020-9-13 15:34:18

def count(x):
    a = len(list(x))
    letter=0
    numb=0
    space=0
    other=0
    while a:
      if list(x).isalpha():
            letter+=1
      
      elif list(x).isdigit():
            
            numb+=1
            
      elif list(x).isspace():
            space+=1
            
      else:
            other+=1
      a-=1
      
    print('字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (letter, numb, space, other))
count('i love fishc.com')


列表索引越界,把a全换成a-1就好了
同时,print结果的缩进不对,你这样会循环打印一堆,已修改
可以的话,给个最佳

昨非 发表于 2020-9-13 15:41:00

kylin121380 发表于 2020-9-13 15:30


你这个第七行判断条件没改啊{:10_245:}
还有缩进{:10_245:}

3216207773 发表于 2020-9-13 15:44:23

昨非 发表于 2020-9-13 15:34
列表索引越界,把a全换成a-1就好了
同时,print结果的缩进不对,你这样会循环打印一堆,已修改
可以 ...

def count(*param):
    length = len(param)
    for i in range(length):
      letters = 0
      space = 0
      digit = 0
      others = 0
      for each in param:
            if each.isalpha():
                letters += 1
            elif each.isdigit():
                digit += 1
            elif each == ' ':
                space += 1
            else:
                others += 1
      print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
            
count('I love fishc.com.', 'I love you, you love me.')
#print里面i+1怎么来的

kylin121380 发表于 2020-9-13 15:47:42

昨非 发表于 2020-9-13 15:41
你这个第七行判断条件没改啊
还有缩进

漏看了
缩进的话他可能想看每一步的情况吧{:10_256:}

昨非 发表于 2020-9-13 15:48:07

3216207773 发表于 2020-9-13 15:44
def count(*param):
    length = len(param)
    for i in range(length):


range函数里的i是从零开始的,而习惯上我们从1开始计数,所以i+1咯

昨非 发表于 2020-9-13 15:48:40

kylin121380 发表于 2020-9-13 15:47
漏看了
缩进的话他可能想看每一步的情况吧

好嘞{:10_256:}

3216207773 发表于 2020-9-13 15:56:21

kylin121380 发表于 2020-9-13 15:47
漏看了
缩进的话他可能想看每一步的情况吧

输出的结果不对的,i love fishc.com只有13个字母

kylin121380 发表于 2020-9-13 16:11:06

3216207773 发表于 2020-9-13 15:56
输出的结果不对的,i love fishc.com只有13个字母

没注意,多循环了一次,a+1改成a就行了。

昨非 发表于 2020-9-13 16:18:28

3216207773 发表于 2020-9-13 15:56
输出的结果不对的,i love fishc.com只有13个字母

请及时结帖,谢谢{:10_297:}
页: [1]
查看完整版本: question