圆形图形程序

时间:2014-07-07 19:37:14

标签: python string int geometry

我正在尝试使用用户输入的半径和中心坐标创建一个绘制圆形的程序。这就是我到目前为止所拥有的

import numpy as np
import matplotlib.pyplot as plt
def circle(r,h,k,domain):
    x = np.array(domain)
    y = eval(np.sqrt(r**2 - (x-h)**2) + k)
    plt.plot(x,y)
    plt.show

rad = input("Radius: ")
xcen = int(input("Center X Coordinate: "))
ycen = int(input("Center Y Coordinate: "))

circle(rad,xcen,ycen,np.linspace(-10,10,500))
print("Done")

当我运行它时,我收到有关行y = eval(np.sqrt(r**2 - (x-h)**2) + k)

的错误
Radius: 5
Center X Coordinate: 0
Center Y Coordinate: 0
Traceback (most recent call last):
  File "/Users/William/Documents/Science/PYTHON3/Circle.py", line 13, in <module>
    circle(rad,xcen,ycen,np.linspace(-10,10,500))
  File "/Users/William/Documents/Science/PYTHON3/Circle.py", line 5, in circle
    y = eval(np.sqrt(r**2 - (x-h)**2) + k)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
>>> 

这是什么意思?为什么strint不能与**

一起使用

1 个答案:

答案 0 :(得分:3)

rad = input("Radius: ")

在Python 3.X中,input返回的结果是一个字符串。然后将该字符串传递给circle,您尝试将其放置。但是你不能对一个字符串进行平方。

在使用之前将rad转换为数字。

rad = float(input("Radius: "))