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

を入れstrlist

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

次に、数字だけでなく、入力文字列からすべての文字を取得しています。

第 3 に、逆の文字列ではなく、元の文字列に作用します。

最後に、関数から を返す必要があります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()進行中の作業だと思いますか?c書かれているように、 for ループに入ると、リストに文字列を追加しようとします[]。そんなことはできません。文字列を別の文字列に追加したり、リストを別のリストに追加したりできます。

おそらく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 に答える