이것은 도전이 아닙니다. 파이썬 (2 또는 3)에서 19 바이트 미만의 두 개의 개별 변수에 사용자 입력을 얻는 것이 가능한지 궁금합니다. 이것들은 내가 얻을 수있는 가장 짧은 것입니다 :
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
이 작업을 수행하는 더 짧은 방법이 있습니까?
답변
사용자에게 메시지를 표시해도 문제가되지 않는 경우 eval
3 .
a,b,c=map(input,[1]*3)
a,b,c=map(input,'111')
메시지가 표시되지 않더라도 짧아집니다.
a,b,c=map(input,['']*3)
슬프게도 xnor의 아이디어는 여전히 더 길기 때문에 (19 바이트) 2 개의 입력에 대해서는 아무것도 저장하지 않습니다. 그러나 (매직이기 때문에) 적절한 길이의 문자열 (또는 적절한 반복 가능)이 이미 있으면 더 짧을 수 있습니다.
xnor는 Python 2에서만 3 개의 입력에 대한 마술 문자열의 예를 찾았습니다.
a,b,c=map(input,`.5`)
그래도 프롬프트가 중요하지 않아야합니다.
이 트릭은 실제로 1eX
표기법 을 사용하여 많은 수의 입력에 대한 바이트를 절약하는 데 도움이 됩니다 (x + 3 입력 가져 오기).
a,b,c,d,e,f=map(input,`1e3`)
설명:
파이썬의 map
함수는 iterable의 각 요소에 전달되는 함수를 수행하고이 함수의 결과를 포함하는 목록 (또는 맵 객체)을 반환합니다. 첫 번째 예의 경우 맵을 다음과 같이 분해 할 수 있습니다.
[input(1), input(1), input(1)]
답변
3 개 이상의 입력의 경우이 길이가 더 짧습니다.
a,b,c=eval("input(),"*3)
답변
질문에 입력 유형을 지정하거나 완전한 프로그램이 필요한 경우가 아니라면 입력을 함수 인수 로 사용하여의 필요성을 줄일 수 있습니다 input()
. 이것이 옵션이 아닌 경우, 다음은 특정 경우에 도움이 될 수 있습니다.
이 변수의 한 문자를 원하는 경우 a
와 b
, 당신은 사용할 수 있습니다
a,b=input()
2 개의 문자열을 입력하면 첫 번째 문자가 지정 a
되고 두 번째 문자가 지정됩니다.b
. 문자열에서 2 자 미만이거나 2 자 이상이면 오류가 발생합니다.
변수 당 하나 이상의 문자가 필요한 경우이 방법은 작동하지 않습니다. 여전히 2 자리 숫자를 문자열로 입력하는 데 사용할 수 있습니다. 9 이상의 숫자가 필요한 경우 전체 범위의 입력 가능한 문자를 숫자로 해석 할 수 있습니다.
이것은 또한 두 개 이상의 변수에 대해서도 작동합니다.
a,b,c,d,e,f,g,h=input()
파이썬에서 문자열은 일련의 문자이며 순서가 예상되는 곳이라면 어디에서나 사용할 수 있기 때문에 작동합니다.