鱼C论坛

 找回密码
 立即注册
查看: 1630|回复: 13

[已解决]这是一个关于元组和集合的问题

[复制链接]
发表于 2020-3-5 11:24:40 | 显示全部楼层 |阅读模式

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

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

x
先看看代码吧
VTB = {"1":"Kagulanana","2":"Fubuki","114514":"Matsuri"}
print(tuple(VTB.keys()))
key1 = eval(input("请从上述提示中任选一个key值输入: "))
def search(key0):
    VTB = {"1":"Kagulanana","2":"Fubuki","114514":"Matsuri"}
    t0 = tuple(VTB.keys())
    if key0 in t0:
        print(key0,"指向的条目是",VTB[key0])
    else:
        print("请输入提示中的key值,请再次输入")
search(key1)
就是一个字典的练习作业
问题在于代码的第三行,输入key1的时候我不能直接输入数字1,会引起报错,而得输入'1'(必须带单引号)才能返回我想要的值
为什么会这样?
该怎么改良一下让我只输入一个字符1就能返回我想要的值?
感谢大手子们
最佳答案
2020-3-5 14:53:39
Fimbulex 发表于 2020-3-5 14:25
我看完了这个
但是还是没有解释我这条语句
key1 = eval(input("请从上述提示中任选一个key值输入: ") ...
>>> a = input("请输入:")
请输入:qiuyouzhi
>>> a
'qiuyouzhi'
>>> eval(a)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    eval(a)
  File "<string>", line 1, in <module>
NameError: name 'qiuyouzhi' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-5 11:27:13 | 显示全部楼层
把eval去掉:
VTB = {"1":"Kagulanana","2":"Fubuki","114514":"Matsuri"}
print(tuple(VTB.keys()))
key1 = input("请从上述提示中任选一个key值输入: ")
def search(key0):
    VTB = {"1":"Kagulanana","2":"Fubuki","114514":"Matsuri"}
    t0 = tuple(VTB.keys())
    if key0 in t0:
        print(key0,"指向的条目是",VTB[key0])
    else:
        print("请输入提示中的key值,请再次输入")
search(key1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 11:35:46 | 显示全部楼层

eval的意思我记得是取值,为什么这里不能用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 11:40:46 | 显示全部楼层
Fimbulex 发表于 2020-3-5 11:35
eval的意思我记得是取值,为什么这里不能用

input会自动将输入的东西转换成字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 11:48:56 | 显示全部楼层
qiuyouzhi 发表于 2020-3-5 11:40
input会自动将输入的东西转换成字符串

number1 = eval(input("Enter a number: "))
print(number1)
那为什么我这一条就没问题呢
我这两种输入的区别在哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 11:49:46 | 显示全部楼层
Fimbulex 发表于 2020-3-5 11:48
那为什么我这一条就没问题呢
我这两种输入的区别在哪

因为你输入的是数字鸭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 12:06:22 | 显示全部楼层
qiuyouzhi 发表于 2020-3-5 11:49
因为你输入的是数字鸭

刚学python,不是很懂
刚刚去百度了一下input和eval两个函数
说是input返回的是str类型
而eval有一个用法是去掉字符串原本的引号,保留字符原本属性。
那为什么我加了eval反而要输入引号?
越看越迷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 12:59:51 | 显示全部楼层
Fimbulex 发表于 2020-3-5 12:06
刚学python,不是很懂
刚刚去百度了一下input和eval两个函数
说是input返回的是str类型

eval() 中填字符串表示变量名:
>>> x = 5
>>> eval('x')
5

需要加引号才能表示字符串:
>>> eval('"x"')
'x'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 13:02:08 | 显示全部楼层
Fimbulex 发表于 2020-3-5 12:06
刚学python,不是很懂
刚刚去百度了一下input和eval两个函数
说是input返回的是str类型

因为去掉引号它就不是字符了啊
所以要加一个引号,input再加一个引号,然后eval去掉一个
(瞎猜的,我先去百度一哈)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 13:04:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 14:25:57 | 显示全部楼层


我看完了这个
但是还是没有解释我这条语句
key1 = eval(input("请从上述提示中任选一个key值输入: "))
必须输入字符串的问题
dalao可以说的更明白一点吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-5 14:38:06 | 显示全部楼层
qiuyouzhi 发表于 2020-3-5 13:04
https://blog.csdn.net/ywx1832990/article/details/81284270

老哥们,我突然意识到一个问题
在字典这一块,字典中每一个条目的键是不是根本就不是int类型,而是str类型?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 14:53:39 | 显示全部楼层    本楼为最佳答案   
Fimbulex 发表于 2020-3-5 14:25
我看完了这个
但是还是没有解释我这条语句
key1 = eval(input("请从上述提示中任选一个key值输入: ") ...
>>> a = input("请输入:")
请输入:qiuyouzhi
>>> a
'qiuyouzhi'
>>> eval(a)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    eval(a)
  File "<string>", line 1, in <module>
NameError: name 'qiuyouzhi' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-5 16:11:44 | 显示全部楼层
VTB = {1:"Kagulanana",2:"Fubuki",114514:"Matsuri"}
print(tuple(VTB.keys()))
key1 = eval(input("请从上述提示中任选一个key值输入: "))
def search(key0):
    VTB = {1:"Kagulanana",2:"Fubuki",114514:"Matsuri"}
    t0 = tuple(VTB.keys())
    if key0 in t0:
        print(key0,"指向的条目是",VTB[key0])
    else:
        print("请输入提示中的key值,请再次输入")
search(key1)
这样就可以了。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 21:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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