我是python的新手,目前正在学习正确使用def函数。
我在Sublime Text中的def代码如下:
def quadratic(a,b,c):
if not isinstance(a,(int,float)):
raise TypeError('bad operand type')
if not isinstance(b,(int,float)):
raise TypeError('bad operand type')
if not isinstance(c,(int,float)):
raise TypeError('bad operand type')
d = b ** 2 - 4 * a * c
if d < 0:
print('no result!')
if d = 0:
x1 = -b / (2 * a)
x2 = x1
return x1,x2
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
return x1,x2
但是当我使用终端(在Mac中)运行此代码时,遇到此错误:
Frank-s-Macbook-Pro:Coding frank$ quadratic(1,2,1)
-bash: syntax error near unexpected token `1,2,1'
对于我必须做出的错误,我将不胜感激。
答案 0 :(得分:7)
您无法直接从终端运行python定义的功能。在这种情况下,您可能希望通过在终端中键入python来在与脚本相同的文件夹中运行解释器。
然后python启动(如果它已安装并且别名正确)。然后,您可以通过导入文件名导入该函数。我们假设您的函数保存在myfunction.py文件下。然后:
import myfunction (without the .py)
然后输入:
>> myfunction.quadratic(a, b, c)
你应该把答案归还给你。
如果你想直接从终端运行脚本,你应该查看输入函数或sys.argv函数,并在重写后执行你的脚本
$ python myfunction.py
编辑: 您的代码中也存在一些错误,请参阅其他答案:)
答案 1 :(得分:1)
我对mac bash不太了解,但不应该打电话:
python quadratic(1,2,1)
答案 2 :(得分:0)
您的代码中至少有2个语法错误... 更正后的代码:
def quadratic(a,b,c):
if not isinstance(a,(int,float)):
raise TypeError('bad operand type')
if not isinstance(b,(int,float)):
raise TypeError('bad operand type')
if not isinstance(c,(int,float)):
raise TypeError('bad operand type')
d = b ** 2 - 4 * a * c
if d < 0:
print('no result!')
if d == 0:
x1 = -b / (2 * a)
x2 = x1
return x1,x2
else:
x1 = (-b + math.sqrt(d)) / (2 * a)
x2 = (-b - math.sqrt(d)) / (2 * a)
return x1,x2
之后
d = b ** 2 - 4 * a * c
如果语句有错误的缩进,并且包含错误:
如果d = 0:
更正这些错误后,您可以直接从Sublime(cmd + b)
运行代码