2017-12-04 13 views
-1

나는 프로그램이 입력을 읽고 싶어. 입력이 "HELP"가 아닌 한 공백으로 구분 된 여러 개의 정수로 구성됩니다. 나는 제공된 정수의 수를 모른다.파이썬 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!")