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

Python TypeError:'str' 유형이 아닌 int로 시퀀스를 곱할 수 없습니다.

파이썬에서는 두 숫자를 곱할 수 있습니다. 숫자에 문자열을 곱할 수도 있습니다. 특정 횟수만큼 반복되는 문자열 시퀀스를 반환합니다.

문자열에 다른 문자열을 곱하려고 하면 "TypeError:'str' 유형의 정수가 아닌 시퀀스를 곱할 수 없습니다" 오류가 발생합니다.

이 가이드에서는 이 오류의 의미와 코드에서 오류가 발생할 수 있는 위치에 대해 설명합니다. 해결 방법을 알아내는 데 도움이 되도록 이 오류의 예를 살펴보겠습니다.

TypeError:'str' 유형의 정수가 아닌 시퀀스를 곱할 수 없습니다.

문자열은 시퀀스의 한 유형입니다. 이것은 파이썬이 반복할 수 있는 문자를 포함하기 때문입니다. 다른 유형의 시퀀스에는 튜플, 사전 및 목록이 포함됩니다.

곱하기 연산자(*)를 사용하여 문자열의 내용을 반복하는 문자열을 만듭니다. 다음 코드를 고려하십시오.

print("Cakes! " * 2)

이 코드는 “Cakes! 케이크!". 곱하기 연산자는 문자열을 두 번 반복합니다.

곱하기 연산자를 사용하여 문자열을 문자열로 곱할 수 없습니다. 정수와 부동 소수점 숫자는 동일한 데이터 유형의 값으로 곱할 수 있는 유일한 값입니다. 파이썬이 두 문자열을 곱하는 것을 해석할 방법은 없습니다.

예시 시나리오

목요일 오후에 식당에서 잼 스콘으로 벌어들인 돈을 계산하는 프로그램을 작성해 보겠습니다.

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

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

시작하려면 잼 스콘의 가격을 정의해야 합니다. 또한 사용자에게 input() 문을 사용하여 마지막 영업일에 얼마나 많은 잼 스콘을 판매했는지 알려달라고 요청합니다.

jam_scone = "1.95"
sold = input("How many jam scones did you sell yesterday? ")

다음으로 이 두 값을 곱합니다. 이것은 주어진 날에 잼 스콘으로 얼마나 많은 돈을 벌었는지 알려줄 것입니다:

earned_from_scones = jam_scone * sold

이제 우리는 스콘으로 얼마를 벌었는지 알았으므로 print()를 작성합니다. 사용자에게 계산 결과를 알려주는 설명:

print("You earned ${} from selling scones.".format(earned_from_scones))

format() 메서드를 사용하면 중괄호({})가 문자열에 표시되는 "earned_from_scones" 값을 추가할 수 있습니다.

또한 각 스콘에서 얼마나 많은 수익이 발생하는지 계산해야 합니다. 우리는 각 스콘에서 25센트의 이익을 얻는다는 것을 알고 있습니다. 얼마나 많은 이익이 발생했는지 계산하기 위해 다음 코드를 사용합니다.

profit = sold * 0.25
print("You made a ${} profit from selling scones.".format(profit))

이 코드는 각 스콘에서 얼마나 많은 이익을 얻었는지 계산한 다음 그 값을 콘솔에 인쇄합니다. 코드를 실행하고 작동하는지 확인해 보겠습니다.

How many jam scones did you sell yesterday? 17
Traceback (most recent call last):
  File "main.py", line 4, in <module>
	earned_from_scones = jam_scone * sold
TypeError: can't multiply sequence by non-int of type 'str'

코드가 오류를 반환합니다.

해결책

오류의 코드 줄을 분석해 보겠습니다.

	earned_from_scones = jam_scone * sold

이 코드 줄은 괜찮아 보이지만 문제가 있습니다. 두 개의 문자열 값을 함께 곱하려고 합니다. "jam_scone"을 문자열로 저장합니다. input() 메소드는 sold()를 의미하는 문자열을 반환합니다. 문자열 값이 있습니다.

이 문제를 해결하려면 "jam_scone"과 "sold"가 모두 부동 소수점인지 확인해야 합니다. 이를 통해 이러한 값에 대해 수학 연산을 수행할 수 있습니다.

다음으로 이러한 변수의 값을 선언하는 방법을 변경합니다.

jam_scone = 1.95
sold = float(input("How many jam scones did you sell yesterday? "))

"jam_scone"의 값은 더 이상 따옴표로 묶이지 않습니다. 이것은 "jam_scone"을 문자열에서 float로 변경했음을 보여줍니다. 또한 float() 메서드를 사용하여 "sold" 값을 부동 소수점 숫자로 변환했습니다.

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

How many jam scones did you sell yesterday? 17
You earned $33.15 from selling scones.
You made a $4.25 profit from selling scones.

우리의 코드는 성공적으로 작동합니다. 먼저, 우리 코드는 사용자에게 콘솔에 판매된 스콘 수를 삽입하도록 요청합니다. 다음으로 우리 프로그램은 가게에서 스콘을 팔아서 벌어들인 돈을 계산합니다. 마지막으로 우리 프로그램은 스콘 판매에서 발생하는 이익을 계산합니다.

결론

두 문자열 값을 곱하려고 하면 "TypeError:can't 곱하기 sequence by non-int of type 'str'" 오류가 발생합니다. 두 개의 숫자 값을 곱하거나 문자열에 정수만 곱하면 이 문제를 해결할 수 있습니다.

이제 Pythonista처럼 이 오류를 해결할 준비가 되었습니다!