2016-06-14 38 views
-2

(Python 2.7版)如何強制python打印變量的值?

letter1 = 'a' 
letter2 = 'b' 
letter3 = 'c' 

for i in range(1,4): 
    temp = 'letter%d' % i 
    print temp 

這將返回

letter1 
letter2 
letter3 

但如何強制蟒蛇打印我的每一個「信」變量的值,如使Python解釋字符串一個變量,以便將打印值,即

a 
b 
c 

編輯:

我遇到了這個http://learnpythonthehardway.org/book/ex7.html,而不是像第20和第21行中的print end1 + end2等聲明,我認爲可以通過數字1到12循環,將數字添加到'結束'字符串(使用與上面的temp一樣的替換)並打印出end1,end2,end3等的值。我希望能更好地解釋我試圖實現的目標。

+0

你可以使用'list'或'dict'來完全避免這個問題嗎?通過名字獲取變量不是一件好事(據我所知,並不可能)。 – Leon

+0

@Leon這很有可能(看到重複的問題),這不是一個好主意。 – MattDMo

回答

1

您試圖在運行時內插變量名稱。這是一個有缺陷的方法。 Pythonic的做法是將這些字母放在一個列表中。

letters = ['a', 'b', 'c'] 

for i in range(3): 
    temp = letters[i] 
    print temp 

您可以不使用臨時變量,也不使用硬編碼3

letters = ['a', 'b', 'c'] 

for i in range(len(letters)): 
    print letters[i] 

甚至更​​好,只是直接循環列表項而不是它們的索引。

letters = ['a', 'b', 'c'] 

for letter in letters: 
    print letter 
+0

確定它看起來像我沒有正確地問這個問題......它沒有太多關於打印出a,b和c,它更多地關於在飛行中創建變量名稱(通過如上所述的替換),然後打印出該變量的值,而不僅僅是連接的字符串。我正在尋找一個函數來強制python在運行時輸出值 – Alex

+0

@Alex在飛行中創建變量名是一個壞主意**。閱讀[this](http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html)瞭解原因。 – MattDMo

+0

@MattDMo感謝您的鏈接,我找到了'eval()'的引用,這就是我在尋找的內容,但是閱讀過它後,我發現它並不是一件好東西。我一直在開發MapBasic,在那裏我們有一個'run command'語句,所以一直在尋找相當的東西 – Alex

0

你正在嘗試做什麼聽起來不舒服。而是使用一個列表:

letters = ['a', 'b', 'c'] 

for letter in letters 
    print letter