2012-10-16 32 views
-1

我的程序應該反轉輸入的字符串,打印它然後提取數字並在列表中打印反轉字符串的編號。錯誤只能連接列表(不是「str」)到列表

def reverse_str(string): 
    revstring =('') 
    length=len(string) 
    i = length - 1 
    while i>=0: 
     revstring = revstring + string[i] 
     i = i - 1 
    return revstring 
def strip_digits(string): 
    result = [] 
    for c in string: 
     result = result + c 
string = raw_input("Enter a string->") 
new_str = reverse_str(string) 
print new_str 
numberless_str = strip_digits(string) 
print numberless_str 

回答

4

strlist

result = result + [c] 

或使用append()

result.append(c) 
+2

甚至'結果+ = [C]' – mgilson

+0

「錯誤不能連接 '海峽' 到 '名單'」。這可能意味着什麼? –

+1

甚至'result + = c'因爲'__iadd__'接受任何迭代 – JBernardo

1

我猜strip_digits()在進展中的工作?正如它在進入for循環時所寫的那樣,它試圖將一個字符串c附加到列表[]上。你不能那樣做。您可以將字符串附加到另一個字符串,或將一個列表附加到另一個列表。

也許你的意思是result開始像一個空的字符串就像它是reverse_str

def strip_digits(string): 
    result = '' 
    for c in string: 
     result = result + c 

或者,如果你希望它是一個列表,然後把c到一個列表第一,或使用append()

def strip_digits(string): 
    result = [] 
    for c in string: 
     result = result + [c] 
     # or: result.append(c) 
+0

我希望它成爲一個列表,但即使在編輯後輸出說我輸入「blah123」它給了我反轉它不給我的名單 – user1695993

1

如果你希望他們作爲一個列表,你應該改變:

result = result + c 

到:

result.append (c) 

但是,請記住,您的代碼不完全符合您的規格。

具體來說,您的功能strip_digits剝離(即扔掉)的數字,它實際上使他們的名單,所以我想它重命名爲get_digits。我也會將numberless_str更改爲number_str,因爲它根本不是無數的。

其次,它是從輸入字符串,而不僅僅是數字越來越所有字符。

第三,它是在原始字符串上進行操作,而不是在原來的字符串上進行操作。

最後,你應該返回result從你的函數,否則你什麼都得不到(None)。

的代碼將被更好地寫成:

def reverse_str(string): 
    revstring = '' 
    length=len (string) 
    i = length - 1 
    while i >= 0: 
     revstring = revstring + string[i] 
     i = i - 1 
    return revstring 

def get_digits(string): 
    result = []     # <- start with empty list. 
    for c in string:    # <- check every char 
     if c in "1234567890":  # <- but only transfer digits 
      result.append (c)  # <- use append for lists 
    return result 

string = raw_input("Enter a string->") 
new_str = reverse_str(string) 
print new_str 
number_str = get_digits(new_str) 
print number_str 
+0

數字應該打印在一個列表 – user1695993

+0

是否有關係?像我必須改變它到那個? – user1695993

+0

當我改變它時,我得到這個錯誤「'NoneType'對象沒有屬性'追加'」 – user1695993

相關問題