2

ユーザーが指定した文字列からすべての母音を削除したい。以下は私のコードと出力として得られるものです。何らかの理由で、for ループは最初の文字のみをチェックし、他には何もチェックしていません。

コード:

sentence = "Hello World."
sentence = sentence.lower()

for x in sentence:
    sentence = sentence.strip("aeiou")
    print (x)

print (sentence)

出力:

hello world

すべての文字を見て、文字量をループしていることを確認するためだけに print(x) があります。しかし、ループが母音に達すると、私が望んでいることをしていないようです。つまり、それを文字列から削除します。

4

2 に答える 2

0

文字列から文字を削除することはできません。文字列オブジェクトは不変です。できることは、これ以上 wovels を含まない新しいストリングを作成することだけです。

x = ' Hello great world'
print x,'  id(x) == %d' % id(x)

y = x.translate(None,'aeiou') # directly from the docs
print y,'  id(y) == %d' % id(y)

z = ''.join(c for c in x if c not in 'aeiou')
print z,'  id(z) == %d' % id(z)

結果

 Hello great world   id(x) == 18709944
 Hll grt wrld   id(y) == 18735816
 Hll grt wrld   id(z) == 18735976

関数によって指定されたアドレスの違いは、オブジェクトxyzが異なるオブジェクトであり、RAM の異なる場所にローカライズされているid()ことを意味します。

于 2013-10-18T20:28:14.777 に答える