鱼C论坛

 找回密码
 立即注册
查看: 3368|回复: 8

想知道变量的问题

[复制链接]
发表于 2017-5-24 07:22:38 | 显示全部楼层 |阅读模式

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

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

x
def lalala(*param):
    length = len(param)
    for i in range(length):
        a = 0 #a是字母
        b = 0 #b是数字
        c = 0 #c是其他字符
        d = 0 #d是空格

        for each in param[i]:
            if each.isalpha():
                a += 1
            elif each.isdight():
                b += 1
            elif d == " ":
                d += 1
            else:
                c += 1
print("一共有%d个字母,%d个数字,%d个其他字符,%d个空格:"%(i,a,b,c,d))
            
lalala('小小小lala la')

提醒我i是not fined
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-5-24 08:26:51 | 显示全部楼层
这是肯定会报错的,因为 print 语句中最后的 i 是未定义的,前面的 i 只在 外层 for 内有用,出了就没用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-24 09:24:14 | 显示全部楼层
print 语句 的 缩进错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-24 12:33:12 | 显示全部楼层
函数内定义的变量在函数外没法用。
请百度 python 变量作用域。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-24 22:36:49 | 显示全部楼层
楼主这段代码错误百出啊!
第一,for i in range(length):
这里定义的i是一个形参。并且是在def lalala内部 ,所以你在外部打印python根本找不到i是什么
第二:
同理,你abcd都是在def lalala 内部定义的, 所以不但i找不到 abcd同样找不到
你可以把abcd定义在函数以外,函数定义开头写成:
def lalala():
        global a,b,c,d
第三:
elif each.isdight():  内置函数名字都写错了   应该是  isdigit()
第四:
print("一共有%d个字母,%d个数字,%d个其他字符,%d个空格:"%(i,a,b,c,d))           
lalala('小小小lala la')
你是先打印 abcd 然后在执行函数lalala   在函数没有执行前, 什么都没有 abcd是什么都不知道 你打印啥?
应该先执行函数 在打印!
第五:

print("一共有%d个字母,%d个数字,%d个其他字符,%d个空格:"%(i,a,b,c,d))   
明明只有4个整形, 你后面怎么跟了5个变量? i是个什么鬼?


。。我说不下去了
楼主写代码不要浮躁,你犯了很多新手很严重的错误!
务求基础扎实!
我写了一个新手学习心得,你可以看看
学习心得

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

使用道具 举报

 楼主| 发表于 2017-5-25 06:48:49 | 显示全部楼层
yongxi 发表于 2017-5-24 22:36
楼主这段代码错误百出啊!
第一,for i in range(length):
这里定义的i是一个形参。并且是在def lalala内 ...

好的,谢谢你!非常感谢,这个代码是根据课后作业做得,后面那个变量我也没搞懂,我看到课后作业也有,他是写的i+1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-25 06:50:53 | 显示全部楼层
yongxi 发表于 2017-5-24 22:36
楼主这段代码错误百出啊!
第一,for i in range(length):
这里定义的i是一个形参。并且是在def lalala内 ...

这个是原答案的代码

def count(*param):
    length = len(param)
    for i in range(length):
        letters = 0
        space = 0
        digit = 0
        others = 0
        for each in param[i]:
            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.')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-25 06:52:19 | 显示全部楼层
SixPy 发表于 2017-5-24 09:24
print 语句 的 缩进错了

好的,我再试试,谢谢指正
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-25 06:56:28 | 显示全部楼层
yongxi 发表于 2017-5-24 22:36
楼主这段代码错误百出啊!
第一,for i in range(length):
这里定义的i是一个形参。并且是在def lalala内 ...

我把你说的那个后面那个变量去掉了一个,然后看了下,i那个确实错啦,print应该和for循环在一个缩进范围内,这样就能找到i了,再次谢谢亲,把print缩进改了就对啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 16:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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