为了账号安全,请及时绑定邮箱和手机立即绑定

Python,从输入的元组中返回整数

Python,从输入的元组中返回整数

郎朗坤 2022-11-01 15:48:02
我正在尝试简化输入命令,我不知道我是否可以解释这一点,但它就在这里。    out = input()    planOne = int(out)    planet = listplanets[planOne]    print(planet)元组也是如此listplanets,如果我输入一个数字,例如 0,它会返回Mercury,我如何制作它以便我可以输入mercury并且它会返回Mercury。我想保留元组格式,并且还需要 say 中元组项的整数值var1。如果有人可以帮助我,将不胜感激。PS我知道,我是个大菜鸟XD。编辑:这就是我的元组的制作方式listplanets = ("Mercury"), (0.378), ("Venus"), (0.907), ("Mars"), (0.377), ("Io"), (0.1835), ("Europa"), (0.1335), ("Ganymede"), (0.1448), ("Callisto"), (0.1264)编辑:我现在正在使用字典,正如你们善良的人所建议的那样。    listplanets = {        "Mercury": "Mercury",        "Mercury2": 0.378,        "Venus": "Venus",        "Venus2": 0.907,        "Mars": "Mars",        "Mars2": 0.377,        "Io": "Io",        "Io2": 0.1835,        "Europa": "Europa",        "Europa2": 0.1335,        "Ganymede": "Ganymede",        "Ganymede2": 0.1448,        "Callisto": "Callisto",        "Callisto2": 0.1264}我以这种方式构建它的原因是为了打印目的,我把它复杂化了!我不确定问另一个问题是否违反规则,但它确实与这篇文章有关。我现在正在尝试拥有它,因此当您输入mercury它时会输出On the planet of Mercury,下面的代码对我不起作用,将不胜感激更多帮助!    out = input().capitalize()    if out == listplanets:        print("On the planet of", listplanets[out])    else:        print("That was an incorrect format! Try again.")        planets()对于任何好奇的人,这是我的代码(为什么它不是文本的原因是因为这是我的作业,反抄袭工具会说我正在复制我自己的代码!XD):--------------------------------------前一部分没有清楚显示,这就是为什么那里有图像
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您不能直接listplanets[out]在字典上使用切片运算符。


而且您不必一遍又一遍地重复同样的事情"mercury": "Mercury"。将此格式用于您的字典,


listplanets = {"Mercury": 0.378, "Venus": 0.907, "Mars": 0.377, "Io": 0.1835, "Europa": 0.1335, "Ganymede": 0.1448, "Call

试试这个


out = input()

if out.isdigit():    #check if the input is digit

    print(list(listplanets.keys())[int(out)])    #gets all key values to a list and so slicing can done 

else:

    print(listplanets[out.capitalize()])    #capitalize first letter


查看完整回答
反对 回复 2022-11-01
?
湖上湖

TA贡献2003条经验 获得超2个赞

如果您需要保持元组格式,则必须像这样遍历数据:


# Data is given like this. First name and then value related to it.

listplanets = ("Mercury"), (0.378), ("Venus"), (0.907), ("Mars"), (0.377), ("Io"), (0.1835), ("Europa"), (0.1335), ("Ganymede"), (0.1448), ("Callisto"), (0.1264)



out = input("Planet: ")

for i in range(len(listplanets)):

    if isinstance(listplanets[i], float):

        # Skip values

        continue

    if out.lower() == listplanets[i].lower():

        print ("{}: {}".format(listplanets[i], listplanets[i+1]))

但是正如评论中提到的,使用字典要好得多。


查看完整回答
反对 回复 2022-11-01
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这段代码怎么样?


# listplanets = ('Mercury', 'Earth')



In [19]: new_listplanets = [(index, {planet.lower(): planet}) for index, planet in enumerate(listplanets)]

# [(0, {'mercury': 'Mercury'}), (1, {'earth': 'Earth'})]


In [20]: new_listplanets[0][0]

Out[20]: 0


In [21]: new_listplanets[0][1]['mercury']

Out[21]: 'Mercury'


查看完整回答
反对 回复 2022-11-01
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信