2017-01-27 26 views
0

我想知道我怎麼可以轉換(可能)的用戶輸入當量變量來代替它使用的輸入作爲變量在python

我希望當我輸入slice1print a1 a2 a3但我發現s l i c e 1 如何我可以修復它

這是代碼是一個爲例

List = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] 
slice1 = List[0] 
slice2 = List[1] 
temp = input("slice number") 
for item in temp: 
    print(i)` 
+0

'L1 = [ 'A1', 'A2', 'a3'],['b1','b2','b3']];打印(l1 [int(input(「輸入切片編號:」))])'。切片編號應位於列表索引內。否則它會拋出錯誤。 – MYGz

回答

1

您應該使用的字典。

lists = {"slice1":["a1", "a2", "a3"], "slice2":["b1", "b2", "b3"]} 
userInput = input("Enter Slice Number") 

varName = "slice"+userInput 
print(" ".join(lists[varName])) 

slice1就是所謂的關鍵。鍵是不可變的項目(通常是字符串,但可以是整數或元組)。每個密鑰都有一個值,例如,slice1的值爲["a1", "a2", "a3"]。您可以像訪問列表一樣訪問值,但不使用索引,而是使用鍵。

所以,當你想要訪問["a1", "a2", "a3"]你做列表["slice1"]。這比使用全局變量有優勢,因爲您可以輕鬆添加新的鍵和更改值。另外,直接改變全局變量也是不好的做法。

" ".join(lists["slice1"]) 

" ".join(list)得到的list所有項目,並使用文本「」作爲分隔它們放在一起。

我有上面結束了這樣

>>>Enter Slice Number1 
a1 a2 a3 
>>> 

因此,當你輸入 「1」 你的代碼 「A1 A2 A3」

0

您可以嘗試使用全局變量()的名稱

訪問變量

例如:

List = [[a1, a2, a3], [b1, b2, b3]] 
slice1 = List[0] 
slice2 = List[1] 
temp = input("slice number") 
slice_list = globals()[temp] 
for item in slice_list: 
    print(item) 
+0

錯誤line6:print(print(globals()['slice'+ item]))KeyError:'s' – a7me3D

+0

如果您使用use'for temp in',您將分別從輸入中獲取每個令牌。 如果你想寫'slice1 slice2'作爲輸入,你可以用空格拆分temp並在輸出上運行(你還需要從給定給全局變量的key中刪除'slice') –

+0

我想寫入slice1和我得到'a1''a2''a3' – a7me3D

0

我不知道我完全瞭解你的問題。

這個怎麼樣的解決方案:

List = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] 
slice1 = List[0] 
slice2 = List[1] 
user_input = input("slice number") 

if user_input == 'slice1': 
    for item in slice1: 
     print item 
elif user_input == 'slice2': 
    for item in slice2: 
     print item 
else: 
    print "Slice not found :(" 
+0

這是運行時,我只有兩個列表,但是當我有+500列表時,我該怎麼做.. 。我搜索一種方法,使用戶輸入像變量,以便不寫ELIF條件:每個變量的traitement – a7me3D