鱼C论坛

 找回密码
 立即注册
查看: 1947|回复: 3

keyerror

[复制链接]
发表于 2017-7-14 13:32:59 | 显示全部楼层 |阅读模式

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

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

x
#做一个石头剪子布的游戏
import random
c=random.randint(1,3)
list1=['石头','剪子','布']
h=c
if c==1:
        h=locals()['list1[0]']
        print(h)
else:
        if c==2:
            h=locals()['list1[1]']
            print(h)
        else:
                if c==3:
                     h=locals()['list1[2]']
                     print(h)

结果返回了keyerror  这是为何?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-14 14:06:18 | 显示全部楼层
你的写法错误
正确是这样写h=locals()["list1"][0]
三个地方都要改成这样的结构

不过我不是很明白你这个题用这种方法的原因,
因为明明很简答的一个表达方式,你却用这么复杂的方式来实现
可能你是在试探locals()函数的用法吧,我第一次见到这个函数,长见识了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-14 14:19:09 | 显示全部楼层
本帖最后由 ooxx7788 于 2017-7-14 14:22 编辑
gopythoner 发表于 2017-7-14 14:06
你的写法错误
正确是这样写h=locals()["list1"][0]
三个地方都要改成这样的结构


命名空间的函数,还有globals(),大概作用就是可以跨作用域用变量吧,看过一次介绍,也不是说的很清楚。不过感觉并不是什么好主意。

特别在这么个小程序里这样写,就好蛋疼。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-14 15:03:43 | 显示全部楼层
ooxx7788 发表于 2017-7-14 14:19
命名空间的函数,还有globals(),大概作用就是可以跨作用域用变量吧,看过一次介绍,也不是说的很清楚 ...

我查看了一下,这个函数就是返回了一个字典格式的信息,包含的东西倒是挺多的
用法不知,但是感觉应该是用来查看信息的,而不是用来获取信息
所以他用这个有点绕路,而且是绕的有点离奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-23 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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