wmy1212 发表于 2021-6-11 20:22:50

写好函数之后不知道怎么输入

代码目的:编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
我的代码:
def count(*x):
    length = len(x)
    for xushu in range(length):
      eachstr = x
      na = 0
      nb = 0
      nc = 0
      for each in eachstr:
            if each.isalpha():
                na += 1
            if each.isdigit():
                nb += 1
            if each is ' ':
                nc += 1
      nd = len(eachstr) - na - nb -nc
      print('第',xushu+1,'个字符串共有:英文字母,',na,'个,数字,',nb,'个,空格,',nc,'个,其他字符,',nd,'个.',sep='')
      
x = input('please input:')
count(*x)
这个代码跑出来是不对的。我试了一下,我的问题应该出在最后两行。因为如果我把最后两行改成甲鱼的:
count('I love fishc.com.', 'I love you, you love me.')
能算出正确的结果。
我觉得应该是我的x输入的有问题,但不知道怎么修改。【我想做成计算用户自己输入的字符串,而不是计算在编辑模式里面给定的(甲鱼那样)】
求大神指点!

qiuyouzhi 发表于 2021-6-11 20:27:56

写个循环:
def count(x):
    length = len(x)
    for xushu in range(length):
      eachstr = x
      na = 0
      nb = 0
      nc = 0
      for each in eachstr:
            if each.isalpha():
                na += 1
            elif each.isdigit():
                nb += 1
            elif each == ' ':
                nc += 1
      nd = len(eachstr) - na - nb -nc
      print('这个字符串共有:英文字母,',na,'个,数字,',nb,'个,空格,',nc,'个,其他字符,',nd,'个.',sep='')
      
while True:
    x = input('please input:')
    count(x)

wmy1212 发表于 2021-6-11 20:33:03

本帖最后由 wmy1212 于 2021-6-11 20:34 编辑

qiuyouzhi 发表于 2021-6-11 20:27
写个循环:

谢谢你!我试了一下,这样输入还是会出问题:
================= RESTART: C:/Users/ASUS/Desktop/py/检查字符串构成.py =================
please input:'dddd12e3 '
这个字符串共有:英文字母,0个,数字,0个,空格,0个,其他字符,1个.
这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
这个字符串共有:英文字母,0个,数字,0个,空格,1个,其他字符,0个.
这个字符串共有:英文字母,0个,数字,0个,空格,0个,其他字符,1个.
please input:
{:5_100:}

不能懒 发表于 2021-6-11 21:12:38

感觉是你前面的循环有问题

Twilight6 发表于 2021-6-11 21:18:19

wmy1212 发表于 2021-6-11 20:33
谢谢你!我试了一下,这样输入还是会出问题:



你直接把字符串解包了,所以每个字符都当成一个字符串参数了

我帮你稍微改了下代码,你输入回车后就可以将参数传入到函数中去

def count(*x):
    length = len(x)
    for xushu in range(length):
      eachstr = x
      na = 0
      nb = 0
      nc = 0
      for each in eachstr:
            if each.isalpha():
                na += 1
            if each.isdigit():
                nb += 1
            if each is ' ':
                nc += 1
      nd = len(eachstr) - na - nb - nc
      print('第', xushu + 1, '个字符串共有:英文字母,', na, '个,数字,', nb, '个,空格,', nc, '个,其他字符,', nd, '个.', sep='')

str_list = []
while True:
    x = input('please input:')
    if not x:
      break
    else:
      str_list.append(x)
      
count(*str_list)
页: [1]
查看完整版本: 写好函数之后不知道怎么输入