鱼C论坛

 找回密码
 立即注册
查看: 1949|回复: 4

[已解决]写好函数之后不知道怎么输入

[复制链接]
发表于 2021-6-11 20:22:50 | 显示全部楼层 |阅读模式

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

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

x
代码目的:编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
我的代码:
  1. def count(*x):
  2.     length = len(x)
  3.     for xushu in range(length):
  4.         eachstr = x[xushu]
  5.         na = 0
  6.         nb = 0
  7.         nc = 0
  8.         for each in eachstr:
  9.             if each.isalpha():
  10.                 na += 1
  11.             if each.isdigit():
  12.                 nb += 1
  13.             if each is ' ':
  14.                 nc += 1
  15.         nd = len(eachstr) - na - nb -nc
  16.         print('第',xushu+1,'个字符串共有:英文字母,',na,'个,数字,',nb,'个,空格,',nc,'个,其他字符,',nd,'个.',sep='')
  17.         
  18. x = input('please input:')
  19. count(*x)
复制代码

这个代码跑出来是不对的。我试了一下,我的问题应该出在最后两行。因为如果我把最后两行改成甲鱼的:
  1. count('I love fishc.com.', 'I love you, you love me.')
复制代码

能算出正确的结果。
我觉得应该是我的x输入的有问题,但不知道怎么修改。【我想做成计算用户自己输入的字符串,而不是计算在编辑模式里面给定的(甲鱼那样)】
求大神指点!
最佳答案
2021-6-11 21:18:19
wmy1212 发表于 2021-6-11 20:33
谢谢你!我试了一下,这样输入还是会出问题:



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

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

  1. def count(*x):
  2.     length = len(x)
  3.     for xushu in range(length):
  4.         eachstr = x[xushu]
  5.         na = 0
  6.         nb = 0
  7.         nc = 0
  8.         for each in eachstr:
  9.             if each.isalpha():
  10.                 na += 1
  11.             if each.isdigit():
  12.                 nb += 1
  13.             if each is ' ':
  14.                 nc += 1
  15.         nd = len(eachstr) - na - nb - nc
  16.         print('第', xushu + 1, '个字符串共有:英文字母,', na, '个,数字,', nb, '个,空格,', nc, '个,其他字符,', nd, '个.', sep='')

  17. str_list = []
  18. while True:
  19.     x = input('please input:')
  20.     if not x:
  21.         break
  22.     else:
  23.         str_list.append(x)
  24.         
  25. count(*str_list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-11 20:27:56 | 显示全部楼层
写个循环:
  1. def count(x):
  2.     length = len(x)
  3.     for xushu in range(length):
  4.         eachstr = x[xushu]
  5.         na = 0
  6.         nb = 0
  7.         nc = 0
  8.         for each in eachstr:
  9.             if each.isalpha():
  10.                 na += 1
  11.             elif each.isdigit():
  12.                 nb += 1
  13.             elif each == ' ':
  14.                 nc += 1
  15.         nd = len(eachstr) - na - nb -nc
  16.         print('这个字符串共有:英文字母,',na,'个,数字,',nb,'个,空格,',nc,'个,其他字符,',nd,'个.',sep='')
  17.         
  18. while True:
  19.     x = input('please input:')
  20.     count(x)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-11 20:33:03 | 显示全部楼层
本帖最后由 wmy1212 于 2021-6-11 20:34 编辑


谢谢你!我试了一下,这样输入还是会出问题:
  1. ================= RESTART: C:/Users/ASUS/Desktop/py/检查字符串构成.py =================
  2. please input:'dddd12e3 '
  3. 这个字符串共有:英文字母,0个,数字,0个,空格,0个,其他字符,1个.
  4. 这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
  5. 这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
  6. 这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
  7. 这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
  8. 这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
  9. 这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
  10. 这个字符串共有:英文字母,1个,数字,0个,空格,0个,其他字符,0个.
  11. 这个字符串共有:英文字母,0个,数字,1个,空格,0个,其他字符,0个.
  12. 这个字符串共有:英文字母,0个,数字,0个,空格,1个,其他字符,0个.
  13. 这个字符串共有:英文字母,0个,数字,0个,空格,0个,其他字符,1个.
  14. please input:
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:12:38 | 显示全部楼层
感觉是你前面的循环有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-11 21:18:19 | 显示全部楼层    本楼为最佳答案   
wmy1212 发表于 2021-6-11 20:33
谢谢你!我试了一下,这样输入还是会出问题:



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

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

  1. def count(*x):
  2.     length = len(x)
  3.     for xushu in range(length):
  4.         eachstr = x[xushu]
  5.         na = 0
  6.         nb = 0
  7.         nc = 0
  8.         for each in eachstr:
  9.             if each.isalpha():
  10.                 na += 1
  11.             if each.isdigit():
  12.                 nb += 1
  13.             if each is ' ':
  14.                 nc += 1
  15.         nd = len(eachstr) - na - nb - nc
  16.         print('第', xushu + 1, '个字符串共有:英文字母,', na, '个,数字,', nb, '个,空格,', nc, '个,其他字符,', nd, '个.', sep='')

  17. str_list = []
  18. while True:
  19.     x = input('please input:')
  20.     if not x:
  21.         break
  22.     else:
  23.         str_list.append(x)
  24.         
  25. count(*str_list)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 18:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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