プログラムの特定の部分を記述しようとすると、助けが必要です。アイデアは、人が大量の意味不明な言葉を入力し、プログラムが「!」に達するまでそれを読み取るというものです。 (感嘆符)そのため、たとえば:
input("Type something: ")
人のタイプ:wolfdo65gtornado!salmontiger22
入力を印刷するようにプログラムに要求すると、wolfdo65gtornado
そして、「!」に到達したら何でもカットしますプログラムの残りの部分では、文字の分析とカウントが行われますが、それらの部分はすでに方法を知っています。最初の部分で助けが必要です。私は本に目を通そうとしましたが、何かが欠けているようです。
おそらくfor
ループを利用してから制限をかけることを考えていますが、特定の文字に対してランダムに代入された文字列入力を分析し、残りを取り除く方法を理解することはできません。
あなたが助けることができれば、私は本当に感謝します。ありがとう!
組み込みの str.partition()
メソッドがこれを行います。 str.split()
とは異なり、str
の残りを別のstr
sにカットすることはありません。
text = raw_input("Type something:")
left_text = text.partition("!")[0]
>>> s = "wolfdo65gtornado!salmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornado'
>>> s = "wolfdo65gtornadosalmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornadosalmontiger223'
「!」文字が検出されない場合は、テキスト全体が取得されます。 「!」に一致しない場合にエラーを出力する場合は、次のようにします。
s = "something!something"
if "!" in s:
print "there is a '!' character in the context"
else:
print "blah, you aren't using it right :("
itertools.takewhile()
が必要です。
>>> s = "wolfdo65gtornado!salmontiger223"
>>> '-'.join(itertools.takewhile(lambda x: x != '!', s))
'w-o-l-f-d-o-6-5-g-t-o-r-n-a-d-o'
>>> s = "wolfdo65gtornado!salmontiger223!cvhegjkh54bgve8r7tg"
>>> i = iter(s)
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
'w-o-l-f-d-o-6-5-g-t-o-r-n-a-d-o'
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
's-a-l-m-o-n-t-i-g-e-r-2-2-3'
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
'c-v-h-e-g-j-k-h-5-4-b-g-v-e-8-r-7-t-g'
これを試して:
s = "wolfdo65gtornado!salmontiger223"
m = s.index('!')
l = s[:m]
受け入れられた答えを説明するため。
分割
partition()
関数は、リスト内の文字列を3つの要素で分割します。
_mystring = "123splitABC"
x = mystring.partition("split")
print(x)
_
あげる:
_('123', 'split', 'ABC')
_
アクセスリスト要素のように:
print (x[0])
==> 123
print (x[1])
==> split
print (x[2])
==> ABC