[해결됨] 파이썬 3 (TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int')
글쓴이: 712843904237124... / 작성시간: 토, 2016/12/10 - 9:35오전
안녕하세요. 이차방정식을 푸는 파이썬 코드를 만들었는데 오류가 뜹니다. 변수 a, b, c
에 대한 input value로 임의의 integer을 넣었는데요. 함수 func_num(n)
에서 string n에 대해서 n[0] == '-'
이면 음수로 간주하고, 아니라면 양수로 간주하기로 했습니다. 그리고 func_num(n)
을 각각 a, b, c
에 대해 실행시켰는데 제대로 string => integer로 안바뀌었는지... if b ** 2 < 4*a*c:
에서 TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
가 뜨네요. Stack Overflow에도 질문을 시도해봤는데... 사이트 자체에서 스팸같다면서 올리질 못하게 하네요;; 그래서 KLDP에 있는 고수분들께 여쭤보려고 합니다.
#Import the module from math import sqrt #Using while loop statement to make the program not finish before the user close the program. while True: #Print out the introduction message, and get the input value to solve the quadratic equation. print("ax^2+bx+c=0의 꼴로 된 방정식을 풀 수 있습니다. a, b, c의 값을 차례대로 입력하세요.") a = input("a를 입력하세요 : ") b = input("b를 입력하세요 : ") c = input("c를 입력하세요 : ") #Define function that checks whether the input values are natural number or negative number def func_num(n): if n[0] == '-': n = -int(n[1:]) else: n = int(n) #Execute the function for the input value a, b, c func_num(a); func_num(b); func_num(c); #This if statement chekcs whether the solution of the quadratic equation going to be real number or imaginary number. if b ** 2 < 4*a*c: solution1 = ((sqrt((b ** 2)-(4*a*c)))-b) / (2*a) solution2 = (-(sqrt((b ** 2)-(4*a*c)))-b) / (2*a) else: square_root = sqrt( -(b**2 - 4*a*c) ) + 1j solution1 = ( (square_root) - b ) / (2*a) solution2 = ( -(square_root) - b ) / (2*a) #Prints out the solution of the quadratic equation. print("정답은 바로바로... {}, {} 이거다!".format(solution1, solution2))
Forums:
댓글 달기