2017-04-24 9 views
0

이 프로그램에 오류가 있습니다. 시스템이 변수를 문자열로 혼동하는 것 같아서 무슨 일이 일어나는지 설명해 주시겠습니까? 변수를 변경하려고했지만 항상 작동을 멈추는 것처럼 보입니다. 그것은 나에게이 응답 내 아마추어 코딩 상태를 감안할 때 이 간단한 코드가 작동하지 않는 이유

line 5, in <module> 
    area = a * b 
TypeError: can't multiply sequence by non-int of type 'str' 

을 제공

# Area of rectangle 
a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
area = a * b 
print(area) 

, 나는이 걸릴 모두는 더 문자열이없는 문자열을 곱하려고한다는 것입니다.

+0

'str'을 다른 str과 곱하거나 'float'또는 'byte'로 곱할 수 없습니다. 'str'에는'int'를 곱하면됩니다. –

+1

이봐 요, 선생님이 코드 작성을 배우고있을 때 Pycharm과 같은 것을 사용하게 만드는 이유를 이해하지 못합니다. Java, C++ 등의 언어를 배우기위한 IDE를 완전히 이해할 수 있지만, * Python *을 배우는 경우 가끔 시작하기 전에 텍스트 편집기/터미널이 좋은 조합이라고 생각합니다. –

답변

3

간단한 대답은 입력을 int 값으로 변환한다는 점에서 이전의 대답은 옳습니다. 그러나이 오류는 다소 수수께끼입니다.

TypeError: can't multiply sequence by non-int of type 'str'

설명이 필요합니다.

여기서 일어나는 일은 파이썬이 문자열을 일련의 문자로 이해한다는 것입니다. 'a' 또는 문자가없는 경우 (예 : '') - 이는 일반적으로 파이썬에서 기본 문자 유형을 사용하지 않습니다.

그리고 파이썬 당신이 순서 곱할 수 밝혀 - 그 순서 n 번 반복하는 숫자 값 n에 의해 - 목록 또는 튜플 또는 일부 등을 :

>>> [1, 2, 3] * 5 
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] 

을 그래서 당신이 할 수있는

>>> [1, 2, 3] * ['a', 'b', 'c'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'list' 
,691 : 다른 순서로 순서를 곱 수 없습니다

>>> "abc" * 3 
'abcabcabc' 

하지만 : 문자열이

예상대로 우리는 문자열로 문자열을 곱하려고 같은 오류가 발생합니다 :

>>> "abc" * "def" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'str' 

두 문자열이 숫자처럼 보이는 경우에도 :

>>> "6" * "10" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'str' 

나는 이것이 당신이 그냥 이해하는 데 도움이 희망 오류를 수정하는 방법은 무엇 이었지만 오류는 무엇부터 시작해야할까요?

0
# Area of rectangle 
a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
#convert input to int. 
area = int(a) * int(b) 
print(area) 
+0

도움 주셔서 감사합니다 :) – HeatwaVe

1

입력을 int/float로 캐스트해야합니다.

int(a) * int(b) 
+0

도움 주셔서 감사합니다 :) – HeatwaVe

0

input() 문자열로 주어진 숫자를 읽습니다 :이 같은 캐스팅 할 필요가 있으므로

input는 문자열을 반환합니다. 당신은 어떤 산술 계산을 수행하기 전에 숫자로 변환 할 필요가

a = int(input("What is the length of side a in centimeters")) 
b = int(input("What is the length of side b in centimeters")) 
area = a * b 
print(area) 

또는

a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
area = int(a) * int(b) 
print(area) 

참고 : (원하는 경우) 당신은 코드를 단순화 할 수 있습니다

a = int(input("What is the length of side a in centimeters")) 
b = int(input("What is the length of side b in centimeters")) 
print(a*b) 
관련 문제