Python 我的代码不接受字符串,它正在检查错误的变量

Python 我的代码不接受字符串,它正在检查错误的变量,python,Python,所以我尝试制作一个函数,plot,它将f作为函数(我在shell中使用cos),a和b作为范围,b大于a(默认为b=1和a=0),具有n个区间,m作为黎曼和的方法(中间、左边或右边) 但问题是,当我运行代码并尝试将其作为一个正确的方法时,它会执行以下操作 将numpy导入为np 将matplotlib.pyplot作为plt导入 def图(f,a=0,b=1,m=str(‘中心’),n=10): v=0 PAR=(B-A)/ 1000 x=np.arange(a、b、par) plt.绘图(x,

所以我尝试制作一个函数,plot,它将f作为函数(我在shell中使用cos),a和b作为范围,b大于a(默认为b=1和a=0),具有n个区间,m作为黎曼和的方法(中间、左边或右边)

但问题是,当我运行代码并尝试将其作为一个正确的方法时,它会执行以下操作

将numpy导入为np
将matplotlib.pyplot作为plt导入
def图(f,a=0,b=1,m=str(‘中心’),n=10):
v=0
PAR=(B-A)/ 1000
x=np.arange(a、b、par)
plt.绘图(x,f(x),‘黑色’)
w=(b-a)/n
##这是突出的绘图,不需要分组
如果b
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
p2.地块(f)
文件“C:\Users\Vincent\AppData\Local\Programs\Python\Python37-32\Project2.py”,第21行,在绘图中
raise Value ERROR('值m必须是以下值之一:中间、左侧或右侧',b)
ValueError:(“值m必须是以下值之一:居中、左或右”,1)

这是我收到的错误消息。我没有为m输入1,我为b输入1,但它不知怎么读取了它。

如果逻辑有故障,您的

if m != str('center') or m != str('left') or m != str('right'):
这里需要
连接器
m
必须始终不等于单词的2或3,因此此条件始终为
True
。相反,试试看

if m not in ("center", "left", "right"):

如果
逻辑有故障,您的

if m != str('center') or m != str('left') or m != str('right'):
这里需要
连接器
m
必须始终不等于单词的2或3,因此此条件始终为
True
。相反,试试看

if m not in ("center", "left", "right"):

更改此代码块:

如果m!=str(‘中间’)或m!=str(‘左’)或m!=str('right'):
raise Value ERROR('值m必须是以下值之一:中间、左侧或右侧',b)
为此:

如果m不在[‘中间’、‘左’、‘右’]:
raise Value ERROR('值m必须是以下值之一:中间、左侧或右侧',b)

您的第一个语句检查
m
是否不是
'center'
、是否不是
'right'
、是否不是
'left'
,并且由于
m
只能是一个,它永远不会是所有三个,因此它将始终引发异常。

更改此代码块:

如果m!=str(‘中间’)或m!=str(‘左’)或m!=str('right'):
raise Value ERROR('值m必须是以下值之一:中间、左侧或右侧',b)
为此:

如果m不在[‘中间’、‘左’、‘右’]:
raise Value ERROR('值m必须是以下值之一:中间、左侧或右侧',b)

您的第一个语句检查
m
是否不是
'center'
,是否不是
'right'
,或者是否不是
'left'
,并且由于
m
只能是一个,它永远不会是所有三个,因此它将始终引发异常。

您不必执行
m=str('center')
来创建字符串。。。只需使用引号就会创建一个字符串:
m='center'
BTW,我知道这个问题以前已经得到了回答,但我找不到其中一个引用。问题的标题——显然——并不是指实际问题。否则,海报将在发布前识别并修复它。您不必执行
m=str('center')
来创建字符串。。。只需使用引号就会创建一个字符串:
m='center'
BTW,我知道这个问题以前已经得到了回答,但我找不到其中一个引用。问题的标题——显然——并不是指实际问题。否则,海报会在发布前识别并修复。非常感谢!这个修好了!非常感谢你!这个修好了!非常感谢你!这个修好了!非常感谢你!这个修好了!