我的代碼看起來有點類似於此:Python的 - 還根據用戶輸入指定不同的姓名變量
import os, sys
ABC = ''
XYZ = ''
FOO = ''
BAR = ''
ITEM = ''
CLEAN = ''
values = ['ABC', 'XYZ', 'FOO', 'BAR', 'ITEM', 'CLEAN']
# some code here
c = raw_input('> ')
if ' ' in c:
c = c.lower()
c = c.split()
if c[0] == 'set':
if c[1] in values:
exec("%s = '%s'" % (c[1], c[2]))
else:
# error...
# the code continues
正如你或許可以告訴,我想賦值給一個變量,但根據用戶輸入決定該變量,而不是通過名稱來引用它。
基本上,我想是到c[2]
串在一開始分配給任何變量,這取決於哪一個在c[1]
用戶挑選,並在這樣做,指的是由相同的別名這些變量(或東西類似)。
# Desired input
> set FOO yes
> print FOO
# Desired output
yes
# Desired input 2
> set ITEM dark
> print ITEM
# Desired output 2
> dark
我只是不能拿出任何東西。
============================================== =============================
編輯:我編輯代碼,看看是否會有所幫助,它didn 「T。無論我用set鍵入什麼,它都卡在其他條件中。
編輯2:這是解決我的問題:
1)values
列表轉換爲所有的字符串 2)添加.upper()
到c[1]
感謝利奧波德爲察覺什麼是錯的。
你如果條件'如果C [1] == str(val)'將永遠不會成功,因爲列表中的所有元素都是空的 – mchackam
是的,'values'只是一個空字符串列表。變量的實際名稱不適用於您。 –
我可以看到你正在嘗試做「變量變量」,這對於有經驗的Python程序員來說很少是正確的行爲方式,對於沒有經驗的人來說,從來就不是正確的行爲方式。這是hacky,緩慢和脆弱,並且完全不需要99.9%的時間(至少)。 – TigerhawkT3