我正在尝试使用用户输入的半径和中心坐标创建一个绘制圆形的程序。这就是我到目前为止所拥有的
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'
>>>
这是什么意思?为什么str
和int
不能与**
答案 0 :(得分:3)
rad = input("Radius: ")
在Python 3.X中,input
返回的结果是一个字符串。然后将该字符串传递给circle
,您尝试将其放置。但是你不能对一个字符串进行平方。
在使用之前将rad
转换为数字。
rad = float(input("Radius: "))