1
muutujad = list(input("Muutujad (sisesta formaadis A,B,C,...): "))
while "," in muutujad == True:
    muutujad.remove(",")
print (muutujad)

私の脳は、このコードはリストからすべてのコンマを削除し、最終的にリストには ["A","B","C" ....] のみを含める必要があると言っていますが、それでもすべての要素が含まれています。コードをオンラインで視覚化しようとすると、[ "、" in muutujad ] は常に False のように表示されますが、コンソールから同じコマンドを確認すると True と表示されます。簡単な質問だと思いますが、基本を理解したいと思います。

4

3 に答える 3

3

while ループの代わりにリスト内包表記を使用できます。

muutujad = [elem for elem in muutujad if elem != ',']

あなたのifテスト自体も間違っています。いずれの場合でもforをテストする必要はありません。それ. ただし、あなたの場合、次のことをテストします。== Trueifif

("," in muutujad) and (muutujad == True)

これは常にFalse になります。inPython では、とのような比較演算子==連鎖しています。を除外する== Trueと、whileループの動作が大幅に改善されます。

list()ただし、文字列を呼び出すと何が起こるかを理解しているかどうかはわかりません。それを個々の文字に分割します:

>>> list('Some,string')
['S', 'o', 'm', 'e', ',', 's', 't', 'r', 'i', 'n', 'g']

入力をカンマで区切られた要素に分割したい場合は、.split()代わりにメソッドを使用してください。カンマをまったく削除する必要はありません。

>>> 'Some,string'.split(',')
['Some', 'string']
于 2012-10-13T09:12:20.380 に答える
1

ここでの最良のオプションは、より良い方法で文字列を単純に解析することです。

>>> muutujad = input("Muutujad (sisesta formaadis A,B,C,...): ").split(",")
Muutujad (sisesta formaadis A,B,C,...): A, B, C
>>> muutujad
['A', ' B', ' C']

str.split()ここでやろうとしていることには、はるかに優れたオプションです。

于 2012-10-13T09:13:45.317 に答える
-1

どうですかlist("Muutujad (sisesta formaadis A,B,C,...): ".replace(' ', ''))

反対票を投じた人:つまり、これが文字列からコンマを削除する方法です。

入力を文字列からリストに変換してから、リストからコンマを削除しないでください。それはばかげています。

list(input('...').replace(' ', '')) または、上で指摘したように分割を使用します。

于 2012-10-13T09:11:31.473 に答える