2017-01-04 24 views
0

我創建了一個列表,像這樣:如何讓raw_input提示自動從前面的列表中讀取一個字符串?

names=["Tom", "Dick", "Harry"]

我想用在提示這些列表元素的raw_input

例如,我希望看到下一行:a=raw_input("What is Tom's height?"),只是在此表單中它是硬編碼,因此a的提示將始終要求Tom的高度。

我希望代碼更靈活,以便在提示中自動更新列表元素的任何更改。例如,如果我將列表更改爲names=["Matthew", "Sarah", "Jane"]我希望a的提示請求Matthew的高度,以便始終讀取列表的第一個元素。

我該怎麼做才能讓列表中的元素髮生變化時提示會自動改變?

+0

提示符只是一個字符串。構建你喜歡的字符串並將其作爲參數傳遞給'raw_input'。 – DyZ

+0

將名稱索引作爲參數傳遞給['str。format()'](https://docs.python.org/2/library/string.html#format-examples) – davedwards

+0

你只想要它來問第一個人的身高嗎?或者你想讓程序通過列表中的每個人並詢問他們的身高? –

回答

0

如果要提示用戶列表中的每一個名字:

names=["Tom", "Dick", "Harry"] 
for name in names: 
    a = raw_input("What is {}'s height? ".format(name)) 

編輯:

要存儲在列表中的結果(根據在評論請求):

names=["Tom", "Dick", "Harry"] 
results = [] 
for name in names: 
    results.append(raw_input("What is {}'s height? ".format(name))) 
+0

這正是我想要的!繼此之後,你知道如何將結果存儲在列表中嗎?當我使用你的代碼,然後'打印'它只顯示最終值(對於Harry) – bigboat

+0

我更新了我的答案。 –

0
names=["Tom", "Dick", "Harry"] 

a = raw_input("What is %s's height?" % names[0]) 
1

這個問題歸結爲:我如何有一個字符串,可以根據程序中的變量進行更改,而不僅僅是一個文字字符串?

在python中,你可以通過幾種方法做到這一點。

一種直觀的方法是將字符串連接(添加)在一起。

這將是這樣的

names=["Tom", "Dick", "Harry"] 
a=raw_input("What is " + names[0] + "'s height?") 

另一個(更好)的方式來做到這一點是與str.format() syntax(也被稱爲「新式字符串格式化」)

names=["Tom", "Dick", "Harry"] 
a=raw_input("What is {}'s height?".format(names[0])) 

這種做法的優點(我會推薦它),因爲它更靈活:您使用的參數(在本例中爲名稱[0])不必是字符串。在這種情況下,兩種方法都可以工作,因爲名稱是一個字符串。但是,例如,如果希望字符串的可更改部分是int,則第一種方法將不起作用,而第二種方法會將int轉換爲字符串,並且它可以像您期望的那樣工作。

還有其他的方法可以做字符串格式化:C-style string formatting with %,從C語言中借用sprintf,雖然str.format()通常被認爲是替代它。

爲了完整起見,有一個final brand-new way to do string formatting,但它只在Python 3.6中。

相關問題