본문 바로가기
  • 부자가 될 남자
프로그래밍/Python

파이썬 input expected at most 1 argument, got 2 오류

by ㅍ우주 2023. 4. 18.

<결론 미리보기>

input을 받을 때 출력되는 값은 하나의 인자만 출력이 가능하다.
이때, 연결자 (,)는 인자 여러개를 인자 그 자체로서 병합,
연결자 (+)는 인자 여러개를 하나의 인자로 병합 시키기에,
"input에서 출력되는 값은 무조건 하나의 인자여야한다." 라는 조건을 성립시키기 위해선 연결자 (+)를 사용해야 한다.

for i in range(1,10)
    how = input(i,"번 문제를 해결했나요? y/n : ")  # 오류 발생

=> for i in rnage(1,10)
        how = input(str(i),"번 문제를 해결했나요? y/n : ")

how = input(i,"번 문제를 해결했나요? y/n : ")

위 코드를 실행시 input expected at most 1 argument, got 2 오류가 발생합니다.
해석해보자면 input은 하나의 인자만 받을 수 있다. 대충 이런 내용인데요

오류 발생 이유는 바로 , 입니다.

,(쉼표)+의 차이를 알고 계신가요?

,(쉼표)를 써도, +을 써도 출력이 될때엔 어떤 두 값이 병합되어 출력이 되지만,

,는 각각의 인자들을 인자 그 자체로써 병합해주고, +는 인자와 인자를 하나의 인자로 병합시킵니다.


예를 들어보겠습니다.

name = '우주'
age = 19

print(name + str(age))
>>> 우주19

print(name,age)
>>> 우주 19

이때, + 사용 시에는 int형 type인 age를 str(문자형)으로 형변환 해주어야합니다

앞서 말했듯이, +는 인자를 하나로 병합하는 것이기에 각각의 인자의 type이 서로 같아야 하는 것입니다.

반면, ,(쉼표)는 각각의 인자의 형태를 유지한 채로 보여주기 식 병합 느낌으로 묶는 것입니다.

 

print(인자1 **+** 인자2)

>>> 새로운 인자(인자1인자2 출력)

print(인자 1, 인자 2)

>>> 인자1 인자2 (출력)

 

결론적으로, +는 인자 하나로 묶음, ,(쉼표)는 인자 여러개 라는 것입니다.

그런데 python에선 input을 받을 때 출력하는 것의 인자는 반드시 하나여야합니다/

따라서 앞서 오류가 난 코드에선 ,(쉼표)를 사용하였기 때문에 인자가 2개 -> 오류 발생 이였던 것입니다.