2013-02-19 5 views
-2

3 차원 원뿔의 반지름과 높이를 묻는 프로그램을 작성한 다음 원뿔의 표면적과 부피를 계산하여 인쇄합니다. 표면적과 부피의 계산은 입력 자료의 수집과 마찬가지로 함수에서 수행됩니다.3D 콘의 표면적 및 부피

  1. 인쇄를 프로그램이 무엇을 나타내는 메시지를 다음과 같이이 부분에 대한

    여러분의 프로그램은 작동합니다.

  2. 반경 (음수가 아닌 숫자)을 피트 단위로 사용자에게 알립니다.
  3. 높이 (음수가 아닌 값)를 피트 단위로 사용자에게 알립니다.
  4. 반경과 높이를 인쇄하지만 십진수 2 자리로 반올림합니다.
  5. 10 진수 2 자리로 반올림하여 표면적과 부피를 인쇄하십시오. 여기

내가 지금까지 무슨 짓입니다 :

import math 

print("This Program will calculate the surface area and volume of a cone." 
    "\nPlease follow the directions.") 
print() 
print() 
r = input(str("What is the radius in feet? (no negatives): ")) 
h = input(str("What is the height in feet? (no negatives): ")) 

math.pi = (22.0/7.0) 
math.sqrt() 
surfacearea = int(math.pi*r**2)+int(r*math.pi(math.sqrt(r**2+h**2))) 
print("The surface area is", surfacearea) 
print() 
volume = (1/3)*math.pi*r**2*h 
print ("The volume is", volume) 

print() 
print("Your Answer is:") 
print() 

print("A cone with radius", r, "\nand hieght", h,"\nhas a volume of : ",volume, 
    "\nand surface area of", surfacearea,) 

나는 점점 오류

을 유지
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int' 

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

사람이 제가 생각하는이 작은 벽 블록을 통과하는 데 도움 수 '플로트'의 일부입니다 문제. 설치가 좋다고 생각하지만 실행이 문제라고 생각합니다.

+0

오류를 표시하고 추적 표시를 표시하여 각 오류의 원인을 알 수 있으므로 추측 할 필요가 없습니다. – abarnert

+0

또한, 이것은 실제 코드가 될 수 없으며,'**'를 얻기 전에'math.sqrt()'줄에서'TypeError'를 얻습니다. 우리가 코드를 디버그하기를 원한다면, 파이썬에 제공하는 것과 동일한 코드를 제공해야합니다. – abarnert

답변

2

나는 파이썬 3을 사용하고 있다고 가정하므로 input은 문자열을 반환하는 것입니다.

그래서 : 당신이 문자열을 광장을 시도하고 있기 때문에이 오류가 발생합니다

r = input(str("What is the radius in feet? (no negatives): ")) 
# ... 
surfacearea = int(math.pi*r**2) #+ ... 

. 너는 그렇게 할 수 없다.

input 뒤에 r = float(r)을 추가하면 사용자가 사각형으로 표시 할 수있는 플로트가 표시되거나 사용자가 뭔가 잘못 입력하면 예외가 발생합니다.

그 사이에 그 줄에 str은 무엇입니까? "What is the radius in feet? (no negatives): "은 어떤 타입입니까? 당신은 무언가를 성취하려고 노력하고 있습니까, 아니면 왜 그 이유를 모르더라도 삽입 했습니까?

마찬가지로,이 라인 :

surfacearea = int(math.pi*r**2)+int(r*math.pi(math.sqrt(r**2+h**2))) 

int에 부동 소수점 값을 변환하는? 과제는 값이 "2 자리로 반올림"되어야한다고 말합니다.

좀 더 일반적으로 코드의 일부 줄에서 오류가 발생하고 이유를 찾을 수없는 경우이를 분해 해보십시오. 한 줄에 엄청난 사건이 일어나고 있습니다.

r_squared = r**2 
pi_r_squared = math.path * r_squared 
int_pi_r_squared = int(pi_r_squared) 
h_squared = h**2 
r_squared_h_squared = r_squared + h_squared 
sqrt_r2_h2 = math.sqrt(r_squared_h_squared) 
# etc. 

그런 다음 당신이 작동되지 않는 한 볼 수 있고 알아낼 이유 코드와 추측의 큰 혼란에보고하지 않고 : 왜 시도하지. pdb 중단 점을 추가하거나 특정 행에서 print 호출을 추가하여 디버그하여 각 값을 사용자가 생각해야하는 값으로 설정하십시오.

+0

감사합니다. 저는 파이썬을 처음 접했고 터치와 이동이 가능합니다. 그러나 나는 매일 더 노력한다. 나 같은 멍청한 멍청한 녀석에게는 배움에 따라 오는 것이 있습니다. 귀하의지도와 시간을 가져 주셔서 감사합니다. –