0

我的程序应该反转输入的字符串,打印它然后提取数字并在列表中打印反转字符串的数字。

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

3 回答 3

5

放入str一个list

result = result + [c]

或使用append()

result.append(c)
于 2012-10-16T02:45:05.843 回答
2

如果您希望它们作为列表,您应该更改:

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
于 2012-10-16T02:46:43.443 回答
1

我猜strip_digits()是正在进行中的工作吗?正如它在进入 for 循环时所写的那样,它试图将一个字符串附加c到一个 list 上[]。你不能那样做。您可以将一个字符串附加到另一个字符串,或将一个列表附加到另一个列表。

也许您打算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)
于 2012-10-16T02:46:06.407 回答