2013-02-02 33 views
0

我需要製作一個程序,用戶在其中輸入一個單詞,並且我需要爲該單詞中的每個單獨的字母做些事情。他們不能一次只輸入一個字母。Python,分解字符串

I.E.有人輸入「測試」,我怎麼才能讓我的程序知道它是一個四個字母的單詞,以及如何分解它,就像讓我的程序將每個變量的四個變量設置爲不同的字母。它也應該能夠處理更大更小的單詞。

我可以使用for語句嗎?類似於對於字母變量的字母ste,但是它是什麼樣的,就像一個20個字符的字母,程序如何獲得所有變量名稱等等?

+1

你能解釋一下你想做這件事的確切用例嗎?我的意思是,爲什麼你想要20個長度爲20的字符串呢? –

+0

聽起來你正在尋找一個像列表這樣的數據結構,但值得注意的是一個字符串也是一個可迭代的,所以它可能不是必需的。 –

+0

WORD是字符串/列表。你可以像解析列表一樣解析一個單詞。問題是什麼 ?? –

回答

1

當你遍歷字符串,它返回單個字符,例如

for c in thestring: 
    print(c) 

你可以用它來把文字轉化成一個列表,如果你真的需要,這將保留其順序,但list(string)是一個更好的選擇(請注意像dict或set這樣的無序類型不能保證任何順序)。

3

你的意思是這樣的嗎?

>>> s = 'four' 
>>> l = list(s) 
>>> l 
['f', 'o', 'u', 'r'] 
>>> 

附錄:

即使這是(顯然)你認爲你想,它可能沒有必要,因爲有可能爲一個字符串來保存一個字的幾乎任何大小 - 這樣一個字符串變量如上面的s應該足夠用於您的程序,並嘗試爲每個字符創建一堆單獨命名的變量。首先,編寫程序的其餘部分會很困難,因爲您不知道要使用哪些有效的變量名稱。

可以不爲每個字符設置單獨變量的原因是因爲單個字符串可以包含任意數量的字符以及爲空。 Python的內置len()函數將返回一個字符串中的字母數(如果應用於一個字符)的計數,因此上面的len(s)的結果將爲4

在一個字符串中的任何字符可以通過用0len(s)-1方括號內的整數索引它進行隨機訪問,因此以引用應該使用s[2]第三個字符。將索引視爲偏移量或字符串開頭的字符很有用。

即使如此,在使用索引Python是經常必要的,因爲你還可以反覆過程中for循環一個字符串中的每個字符沒有如本簡單的例子使用它們:

num_vowels = 0 
for ch in s: 
    if ch in 'aeiou': 
     num_vowels += 1 
print 'there are', num_vowels, 'vowel(s) in the string', s 

的Python還有許多其他的工具和內置插件可以在處理字符串時提供進一步的幫助(事實上可以簡化上述示例),隨着您對語言及其許多庫的熟悉程度的提高,最終您將學習到這些內容。

+0

是的,這是完美的。 – user1836262

1

你不必做任何這些;在Python中,您可以使用方括號訪問字符串的字符:

>>> word = "word" 
>>> print(word[0]) 
w 
>>> print(word[3]) 
d 
>>> print(len(word)) 
4 
0

您不想將每個字母分配給單獨的變量。然後你就可以編寫程序的其餘部分,甚至不需要知道你定義了多少個變量!這比一次處理整個字符串更糟糕。

你反而想要做的是隻有一個變量持有字符串,但你可以引用其中的個別字符與索引。假設字符串在s中,那麼s[0]是第一個字符,s[1]是第二個字符等。您可以通過檢查len(s) - 1來找出數字到底有多遠(因爲索引從0開始,長度爲1的字符串具有最大值索引0,長度爲2的字符串具有最大索引1等)。

這比處理如何生成len(s)變量名稱更易於管理,將它們全部分配給一段字符串,然後知道需要引用哪些變量。

雖然字符串是不可變的,所以你不能分配s[1]來改變第二個字符。如果你需要這樣做,你可以創建一個列表,例如l = list(s)。然後l[1]是第二個字符,您可以分配l[1] = something來更改列表中的元素。然後當你完成後,你可以得到一個新的字符串與s_new = ''.join(l)join建立一個字符串通過加入一系列的字符串作爲其參數傳遞,使用它被調用的字符串左側作爲每個元素之間的分隔符在這種情況下,我們將使用空字符串作爲分隔符連接單字符字符串列表,因此我們只將所有單字符字符串連接到一個字符串中)。

0
x = 'test' 
counter = 0 
while counter < len(x): 
    print x[counter] # you can change this to do whatever you want to with x[counter] 
    counter += 1 
+0

這裏沒有真正的理由使用'while I