鱼C论坛

 找回密码
 立即注册
查看: 4501|回复: 21

调试了好长时间,不知道哪错了!!!

[复制链接]
发表于 2014-10-4 22:14:10 | 显示全部楼层 |阅读模式

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

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

x
今天做小甲鱼老师的课后习题的时候碰到了问题,麻烦各位给看下:
问题: 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。
效果图为: 图片3.png
我写的代码为:
def count(*str0):
    str1='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    num='1234567890'
    length=len(str0)
    for i in range(length):
        if type(str0[i])!=type('l'):
            print('第%d个参数不是字符串,瞎啊!' % i+1)
            continue
        else:
            str_count=num_count=space_count=other_count=0
            for each in str0[i]:
                if each in str1:
                    str_count+=1
                elif each in num:
                    num_count+=1
                elif each==' ':
                    space_count+=1
                else:
                    other_count+=1
            print('第%d个字符串共有: 英文字母%d个,数字%d个,空格%d个,其他字符%d个。' % (i+1,str_count,num_count,space_count,other_count))


count('I Love Fishc.com.','I love you, you love me.',2323)


报错类型为:
第1个字符串共有: 英文字母13个,数字0个,空格2个,其他字符2个。
第2个字符串共有: 英文字母17个,数字0个,空格5个,其他字符2个。
Traceback (most recent call last):
  File "G:\玩玩\python\代码\testing.py", line 23, in <module>
    count('I Love Fishc.com.','I love you, you love me.',2323)
  File "G:\玩玩\python\代码\testing.py", line 7, in count
    print('第%d个参数不是字符串,瞎啊!' % i+1)
TypeError: Can't convert 'int' object to str implicitly

还有个小问题:就是如何把已经解决@小甲鱼 的问题的提醒给去掉,谢谢各位帮忙的鱼油了。



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

使用道具 举报

发表于 2014-10-5 08:45:24 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<windows.h>

  3. int main()
  4. {
  5.         char ch;
  6.         int En = 0,Nu = 0,Sp = 0 ,Ot = 0;
  7.         printf("请输入一个字符串:");
  8.         while ((ch = getchar()) != '\n')
  9.         {
  10.                 if (ch == 32)
  11.                 {
  12.                         Sp++;
  13.                 }
  14.                 else if (48 <= ch && ch <= 57)
  15.                 {
  16.                         Nu++;
  17.                 }
  18.                 else if ((65 <= ch && ch <= 90) || (97 <= ch && ch <= 122))
  19.                 {
  20.                         En++;
  21.                 }
  22.                 else
  23.                 {
  24.                         Ot++;
  25.                 }
  26.         }

  27.         printf("数字:%d  英文:%d  空格:%d  其他:%d\n",Nu,En,Sp,Ot);

  28.         system("pause");

  29.         return 0;
  30. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-6 09:59:05 | 显示全部楼层

简洁的实现啊!!!学到了!!!不过这好像是C语言,请问牡丹大大如何在Python中实现单个获取用户输入并进行判断啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-6 10:11:03 | 显示全部楼层
wei_Y 发表于 2014-10-5 09:37
>>>
第1个字符串共有: 英文字母13个,数字0个,空格2个,其他字符2个。
第2个字符串共有: 英文字母17 ...

解释的这么详细,感动哭了啊:cry:cry:cry ,调试过后果然可以了,不过还有一个问题:就是为什么不能直接传数字???我记得收集参数不是将传入的所有参数都整理成一个元组的形式吗,既然是元组,那应该什么都可以装呀,为什么数字就不可以呢???还有,怎么打赏???想给各位回复我的好心的大大送点鱼币用,略表心意!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 10:40:24 | 显示全部楼层
学习了:victory:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 11:36:05 | 显示全部楼层
龍鸣飞 发表于 2014-10-6 10:11
解释的这么详细,感动哭了啊 ,调试过后果然可以了,不过还有一个问题:就是为什么不能直接 ...

>>> len(123)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    len(123)
TypeError: object of type 'int' has no len()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 12:03:11 | 显示全部楼层
无视8楼,回答错了。不好意思。
首先是你那个代码本身就写的只能判断字符串。
第二个是就算没有判断字符串,整数本身也是不可以迭代的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-6 12:27:41 | 显示全部楼层
wei_Y 发表于 2014-10-6 12:03
无视8楼,回答错了。不好意思。
首先是你那个代码本身就写的只能判断字符串。
第二个是就算没有 ...

我的代码只对字符串进行处理啊,不是字符串的我直接跳过了呀!
我没有对整数进行迭代处理呀
不懂“代码本身只能判断字符串”是什么意思
我可能对问题有些刨根问底,希望不会麻烦到你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 13:35:43 | 显示全部楼层
(str0[i]),int类型是没有这个的,所以报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 14:18:31 | 显示全部楼层
龍鸣飞 发表于 2014-10-6 12:27
我的代码只对字符串进行处理啊,不是字符串的我直接跳过了呀!
我没有对整数进行迭代处理呀
不懂“代码 ...

你问的不是"为什么不能传入整数吗?"
第一:传进去整数了因为你写的if type(str0[i])!=type('long'): 所以不会进行下一步。也就无法实现判断有几个数字的功能。
第二: 就算你把if type(str0[i])!=type('long'):这句去掉,下面的for each in str0[i]:就会报错,因为整数不能迭代。

so。传整数没有用。要是想判断里面的数字个数还得要字符串包裹。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-6 22:16:12 | 显示全部楼层
第七行加个封号试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-7 20:10:24 | 显示全部楼层
破渔网兜兜 发表于 2014-10-6 13:35
(str0),int类型是没有这个的,所以报错了

现在才看帖,不好意思不太懂。。。str0[0]是str类型,str0[1]就是int类型啊,str[2]是str类型,有什么不对吗???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-7 20:12:47 | 显示全部楼层
wei_Y 发表于 2014-10-6 14:18
你问的不是"为什么不能传入整数吗?"
第一:传进去整数了因为你写的if type(str0)!=type('long') ...

现在才看帖,不好意思,我写的是if type(str0[i])!=type('long'),str0[0]是str类型,str0[1]就是int类型啊,str0[2]是str类型,你是不是看错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-7 20:14:26 | 显示全部楼层
黄志伟 发表于 2014-10-6 22:16
第七行加个封号试试

封号是什么东西???本人小菜菜,还请说的明白一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-7 20:56:38 | 显示全部楼层
龍鸣飞 发表于 2014-10-7 20:14
封号是什么东西???本人小菜菜,还请说的明白一点

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

使用道具 举报

 楼主| 发表于 2014-10-7 21:00:43 | 显示全部楼层
零度非安全 发表于 2014-10-7 20:56
分号啊!             ;

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

使用道具 举报

发表于 2014-10-7 21:14:38 | 显示全部楼层
else: #是字符串类型的话就进行统计
            str_count=num_count=space_count=other_count=0
            for each in str0[i]:
因为整型是会进入这个else,然后你直接进行for in 的迭代,int是不能进行for each in str0[i] 的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-7 21:48:28 | 显示全部楼层
龍鸣飞 发表于 2014-10-7 20:12
现在才看帖,不好意思,我写的是if type(str0)!=type('long'),str0[0]是str类型,str0[1]就是int类型啊, ...

贴错代码了。。
我说的不能传不是不可以,我想说的意思的要是想判断有几个数字的话要用字符串的那种。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-8 22:53:25 | 显示全部楼层
大一狗 装逼失败 别打我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-9 18:16:03 | 显示全部楼层
wei_Y 发表于 2014-10-7 21:48
贴错代码了。。
我说的不能传不是不可以,我想说的意思的要是想判断有几个数字的话要用字符串 ...

不好意思,第一次确实贴错代码了,我又贴了一次。
我知道了,多谢您这么耐心的解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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