2017-12-04 1 views
-1

私はプログラムが入力を読みたいです。入力が「HELP」でない限り、スペースで区切られた複数の整数で構成されます。私は提供される整数の数を知らない。Python 3.6では、未知の文字列をどのようにしてセットに変換できますか?

私は整数をセットに入れたいと思っています。

これは現在使用しているコードですが、時間がかかり、より高速な方法が必要です。

nextInput = input() 
while nextInput != "HELP": 
    testString = set() 
    testString1 = nextInput.split() 
    for j in range(0, len(testString1)): 
     k = int(testString1[j]) 
     testString.add(k) 
    nextInput = input() 
+1

'nextInput'は、ループ内で変化したことがありません、このループは決して終わらない。 – trincot

+0

ループ内にはもっと多くのことが起こっていますが、複数の変数があります。ここでコードの残りの部分を投稿すると役に立ちますか? – user8920020

+0

最小限のコードを投稿する必要がありますが、依然として代表的なものです。私はループがあなたの問題に関連していないと言いますので、ループ部分を削除してください。 – trincot

答えて

1

あなたは

testString = set(nextInput.split()) 

を編集してあなたの中の全身を交換できるように設定する通知は()、パラメータとして反復可能な受け入れ:あなたは数字のセットを(持っている必要がある場合はこれは最初の質問では明確ではなく、特に変数名が "testString"であったため、変数の名前を変更して自分自身の正気のために)

numset = set(int(_) for _ in nexInput.split()) 

以下では、もちろん、次の入力を求める行を追加する必要があります。もちろん

あなたは完全にニシキヘビのようにしたい場合、あなたはどうなる、一度だけ入力をお願いします:

while True: 
    nextInput = input() 
    if nextInput == 'HELP': 
    break 
    numset = set(int(_) for _ in nexInput.split()) 
+0

@ user8920020これはアイデアですが、更新を受け入れず、アイテムはまだ文字列です –

+0

既存のセットを更新する必要があることに気付きました。その場合、発電機の表現の代わりに地図を使用していても、Anton VBRからの答えが良いです。 – MGHSM

+0

心配しないでください!そこにはたくさんの問題があります。 :) –

0

はこれを試してみてください:

# Create empty set 
testString = set() 

while True: 

    # Ask for input 
    nextInput = input() 

    # Break if user writes help 
    if nextInput.upper() == 'HELP': 
     break 

    # Try to update the set with ints else print Error! 
    try: 
     testString.update(map(int,nextInput.split())) 
    except ValueError: 
     print("Error with input!") 
関連する問題