python无法使fast_从无错误浮动

python无法使fast_从无错误浮动,python,plot,sage,Python,Plot,Sage,我写了这个函数 def f(t): if 0<t<pi: return 1 elif t==pi: return 0 elif gp(pi)<t<2*pi: return -1 有什么问题吗? 提前感谢。最可能的问题是这三个条件都为false,因此函数隐式返回None 例如,当t==0或t>=2*pi时会发生什么情况?这意味着t不满足这两个条件。如果发生这种情况,您是否有默认的回退?如果是这样,请在代码底部添加一个return def

我写了这个函数

def f(t):
  if 0<t<pi:
    return 1
  elif t==pi:
    return 0
  elif gp(pi)<t<2*pi:
    return -1
有什么问题吗?
提前感谢。

最可能的问题是这三个条件都为false,因此函数隐式返回
None


例如,当
t==0
t>=2*pi
时会发生什么情况?

这意味着
t
不满足这两个条件。如果发生这种情况,您是否有默认的回退?如果是这样,请在代码底部添加一个
return

def f(t):
  if 0<t<pi:
    return 1
  elif t==pi:
    return 0
  elif gp(pi)<t<2*pi:
    return -1
  return -3  # if it's -3 you will know t is satisfying none of the previous conditions
def(t):

如果0代码无法为您提供名称错误的唯一方法是,如果已经定义了
t

sage: pl5 = plot(f(t),(0,3))
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-36-1f9b723e1faf> in <module>()
----> 1 pl5 = plot(f(t),(Integer(0),Integer(3)))

NameError: name 't' is not defined
如果要绘制函数,只需关闭
t
。请注意,我已将范围从
(0,3)
更改为
(0,6
),因此我们至少看到了一些有趣的内容

sage: pl5 = plot(f,(0,6))
sage: pl5.save("pl5.png")



旁白:我不知道你的
gp(pi)
应该做什么——这里真的没有必要让Pari参与进来。只需使用
pi

您的函数f将返回无

原因是,当这三个条件都失败时,根本不会给出返回语句。在这种情况下,Python将不返回任何值

要么在f的末尾添加一个带有数字值的return语句,要么更改条件,以便涵盖所有情况

为了防止出现这种情况,您还可以选择(推荐)始终使用其他部件(至少在不确定时,如果涵盖所有情况):


输入中的
t
是什么?这意味着
t
不满足这两个条件。如果发生这种情况,您是否有默认的回退?如果是这样,请在代码底部添加一个
return
。如果
t
等于
None
,则
f
应该返回什么?
sage: t = var("t")
sage: print f(t)
None
sage: plot(None,(0,3))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-44-5b43a830d374> in <module>()
----> 1 plot(None,(Integer(0),Integer(3)))
[...]
TypeError: no way to make fast_float from None
sage: pl5 = plot(f,(0,6))
sage: pl5.save("pl5.png")
if ....
   ...
elif ...

...
else: # all the rest will be caught here
   return some_value