파이썬에서 사용자 입력을 얻는 더 짧은 방법이 있습니까?


17

이것은 도전이 아닙니다. 파이썬 (2 또는 3)에서 19 바이트 미만의 두 개의 개별 변수에 사용자 입력을 얻는 것이 가능한지 궁금합니다. 이것들은 내가 얻을 수있는 가장 짧은 것입니다 :

a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()

이 작업을 수행하는 더 짧은 방법이 있습니까?


2
세 개 이상의 입력을받는 경우 세 번째가 아마도 가장 좋을 것입니다.
SuperJedi224

1
나는 명령 줄 인수를 말하려고 a,b=sys.argv[1:2]했지만 import sys(오른쪽?)
Alex A.

python3에서는 a,b=input().split()다른 19 바이트 솔루션이지만 개선되지는 않았습니다. 즉, a와 b는 문자열이고 입력은 공백으로 구분되어 입력됩니다.
Matty

그것이 도움이되는지 확실하지 않지만 일부 언어에서는 벡터를 사용하여 2 개의 변수가 아닌 2 개의 숫자를 얻을 수 있습니다. 두 개의 임의 변수의 경우 더 복잡한 컨테이너가 사용될 수 있습니다.
Dennis Jaheruddin

a,b=input()Py2
Oliver Ni

답변:


11

사용자에게 메시지를 표시해도 문제가되지 않는 경우 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)]

2
이렇게하면 map(input,'xxx')3 개보다 2 바르, 그리고 4+에 대한 더 동등한 길이입니다.
xnor

3
만일 우연히, 정확히 22 개의 입력을 받아야한다면, map(input,`id`)짧아집니다 :-). 마찬가지로 map(input,`.1`)19 개의 입력에 대해.
xnor

3
실제로 는로 표시 a,b,c=map(input,`.5`)되기 때문에 3 개의 입력에 대한 문자를 저장합니다 . .50.5
xnor

그래, 잘 됐어 멋진 트릭!
DJMcMayhem

6

3 개 이상의 입력의 경우이 길이가 더 짧습니다.

a,b,c=eval("input(),"*3)

4

질문에 입력 유형을 지정하거나 완전한 프로그램이 필요한 경우가 아니라면 입력을 함수 인수 로 사용하여의 필요성을 줄일 수 있습니다 input() . 이것이 옵션이 아닌 경우, 다음은 특정 경우에 도움이 될 수 있습니다.


이 변수의 한 문자를 원하는 경우 ab, 당신은 사용할 수 있습니다

a,b=input()

2 개의 문자열을 입력하면 첫 번째 문자가 지정 a되고 두 번째 문자가 지정됩니다.b . 문자열에서 2 자 미만이거나 2 자 이상이면 오류가 발생합니다.

변수 당 하나 이상의 문자가 필요한 경우이 방법은 작동하지 않습니다. 여전히 2 자리 숫자를 문자열로 입력하는 데 사용할 수 있습니다. 9 이상의 숫자가 필요한 경우 전체 범위의 입력 가능한 문자를 숫자로 해석 할 수 있습니다.

이것은 또한 두 개 이상의 변수에 대해서도 작동합니다.

a,b,c,d,e,f,g,h=input()

파이썬에서 문자열은 일련의 문자이며 순서가 예상되는 곳이라면 어디에서나 사용할 수 있기 때문에 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.