Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python TypeError:형식 문자열에 대한 인수가 충분하지 않습니다.

Python 문자열은 올바른 수의 인수를 사용하여 형식을 지정해야 합니다. 지정하는 인수의 수가 문자열로 형식화하려는 값의 수보다 적으면 "TypeError:형식 문자열에 대한 인수가 충분하지 않음"과 같은 오류가 발생합니다.

이 가이드에서는 이 오류의 의미와 발생 이유에 대해 설명합니다. 코드에서 이 오류를 해결하는 방법을 이해하는 데 도움이 되는 예제를 살펴보겠습니다.

TypeError:형식 문자열에 대한 인수가 충분하지 않습니다.

우리의 오류는 TypeError입니다. 이는 기본 데이터 유형이 해당 작업을 지원하지 않는 값에 대해 무언가를 시도했음을 의미합니다.

이 경우 문자열 형식으로 작업합니다. 파이썬은 우리가 문자열 형식을 잘못 지정했다고 알려줍니다.

문자열 형식을 지정할 때 지정하는 인수의 수는 형식을 지정할 값의 수와 같아야 합니다. 그렇지 않으면 오류가 발생합니다.

예시 시나리오

이 오류가 발생하는 일반적인 상황은 % 문자열 형식의 인수를 괄호로 묶는 것을 잊었을 때입니다. 이 구문은 % 연산자를 사용하여 문자열에 값을 추가합니다.

여기에서 우리는 우등 명단에 있는 학생 이름 목록을 문자열로 형식화하는 앱을 빌드합니다. 먼저 학생 이름 목록을 정의합니다.

students = ["Andy", "Malcolm", "Lindsay", "Lucy"]

다음으로 % 구문을 사용하여 이러한 값을 문자열로 형식화합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
print(honor_roll)

"students" 배열의 네 이름 모두를 "honor_roll" 문자열로 형식화합니다. 값의 형식을 지정해야 하는 위치를 나타내기 위해 문자열 내부에 %s를 사용합니다. %는 문자열 뒤에 추가할 값을 지정하는 데 사용됩니다.

코드를 실행하고 어떤 일이 일어나는지 확인하세요:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % students[0], students[1], students[2], students[3]
TypeError: not enough arguments for format string

파이썬에 오류가 발생했습니다. 어떻게 해결할 수 있는지 봅시다.

해결책 #1:문자열 서식 구문 수정

우리는 문자열 형식을 잘못 지정했습니다. % 연산자를 사용할 때 문자열에 추가하려는 값은 괄호로 묶어야 합니다.

위의 예에서 문자열 내부에 추가할 값을 쉼표로 구분된 값 목록으로 지정합니다. 이 목록은 괄호 안에 표시되지 않습니다.

% 기호 뒤에 오는 값을 괄호로 묶어 오류를 수정합니다.

honor_roll = "%s, %s, %s, and %s are on the CK High School Honor Roll." % (students[0], students[1], students[2], students[3])

코드를 실행해 보겠습니다.

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

우리 코드는 우등생 명단에 있는 학생들을 알려주는 메시지를 성공적으로 반환합니다.

해결책 #2:.format() 사용

% 구문이 구식이 되기 시작했습니다. 현대 Python 코드에서 더 선호되는 .format() 메서드와 같은 문자열 형식을 지정하는 다른 메서드가 있습니다.

문제를 해결하기 위해 .format()을 사용할 수 있습니다. % 구문 대신 구문:

honor_roll = "{}, {}, {}, and {} are on the CK High School Honor Roll.".format(students[0], students[1], students[2], students[3])

이 구문의 구조는 % 메서드의 구조와 유사합니다. 문자열에서 {} 대괄호를 사용하여 값을 추가할 위치를 나타냅니다.

.format()을 사용합니다. 메서드를 사용하여 문자열에 추가하려는 값 목록을 지정합니다. 코드를 실행해 보겠습니다.

Andy, Malcolm, Lindsay, and Lucy are on the CK High School Honor Roll.

우리 프로그램은 우등 명단에 오른 학생의 이름 목록을 성공적으로 보여줍니다. 이 목록은 문자열의 일부로 형식이 지정됩니다.

결론

"TypeError:형식 문자열에 대한 인수가 충분하지 않음" 오류는 문자열 형식 작업에 지정된 인수의 수가 문자열에 추가하려는 값의 수와 같지 않으면 발생합니다.

이 문제를 해결하려면 % 연산자를 사용하는 경우 먼저 모든 인수를 중괄호()로 묶어야 합니다. .format()을 사용할 수 있습니다. 이 오류를 수정하고 코드를 현대화하려면 % 구문을 대체하는 방법을 사용하십시오.

이제 전문가처럼 이 일반적인 Python 오류를 수정할 준비가 되었습니다!