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

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]))
但是正如評論中提到的,使用字典要好得多。

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'
添加回答
舉報