python中 x=y=True什么意思?这个表达式的值是True吗?这个表达式正确吗?
Sympy是python中非常强大的符号运算库,可以以书写习惯表示数学表达式。下面介绍用Sympy求方程数值解的方法。
下面代码全部在
from sympy import *
init_printing(use_unicode=True) # 按书写习惯输出
下运行。
数学表达式的输入
首先声明符号:
x = symbols('x')
即计算机中的变量x代表数学表达式中的x。在后文输出中所有的x会显示为x。如果x=symbols('x0'),则输入的方程中所有x将在输出中以x0表示。
如果需要希腊字母
l, r = symbol('lambda rho')
l, r将分别以λ,ρ表示。可以在一个表达式中同时声明多个符号。
或者使用var()声明:
var('x')
与上面等效。
声明表达式:
f = (5/x)*(exp(x)-1)-exp(x)
此时若输出f可以看到书写习惯的表达式。由于表达式在markdown下显示不正常,在此不放置示例。注意f的类型是class 'sympy.core.add.Add'
求f(x)=0数值解
因为有的函数零点不止一个,因此在Sympy中解的输出为一个list。使用solve(表达式,自变量符号)可以解析地解方程:
s, = solve(f, x)
这里根据上面f的赋值,得到s为
LambertW(-5e**-5)+5
其中用了特殊函数表达。
我们需要求这个结果的数值近似,则输出
s.evalf()
得到输出
4.96511423174428
就是方程f(x)=0的数值解。
求给定自变量x值时函数f(x)的值 | 将表达式转化为函数
f.evalf(subs = {x:4.96})
得到f(4.96)的数值
0.141885450782171
如果需要以计算机函数的形式定义函数f(x),则可以使用lambdify()进行转化:
f_func = lambdify(x, f)
之后可以调用
f_func(4.96)
输出
0.141885450782
利用这个方法可以测试方程的数值算法,如使用sympy接口写牛顿法等。
实际上是运算优先级问题
2!=5 or 0, 换一个表达方式 (2!=5) or 0,前面2!=5是True,后面0是False
所以,最终表达式是True or False, 显然,结果是True
你问这个问题,显然你对运算符的优先级不清晰,建议先学习
python运算符
意思就是把True这个值同时赋给X和Y,相当于:x=True y=True
是,正确。
看代码:
代码
意思是:把布尔值True赋值给y再把y赋值给x.表达式没有问题,最后的到的结果就是x为True,y也为True
登咽代宏: 这个函数等价于 def f(x): y = x > 6 # if > 6, y=True; if <=6, y=False return y其功能是用来判断输入的参数x是否大于6, 返回结果是True或者False
固原市15012067902: python中x=(y=1 )为什么是非法的呢? - ?
登咽代宏: x=(y=1)在解释器看来就是x= y=1,解释器会先解释y=1 但是y=1是个赋值语句不会有返回值,所以x等于的是个空值. Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品.Python提...
固原市15012067902: python中 x.sort() == sorted(y) 为什么是False - ?
登咽代宏: 因为比较的对象错了. x.sort()sort是列表的一个方法,该方法直接修改原x列表,返回None. 所以,比较的对象应该是sort后的 x 与 sorted(y).x.sort() x == sorted(y)这样就返回True了
固原市15012067902: python新手求助 x=222 y=222 x is y这个输出是true x=500 y=50 - ?
登咽代宏: Python 是面向对象的语言,整数也是对象,一些小整数频繁用到,如果频繁创建对象会影响效率,因此对于-5到257的小整数,Python只创建一遍对象,所以x和y=222是同一对象,而500不属于小整数,创建了两遍.
固原市15012067902: python 这个程序 true初始是什么值 - ?
登咽代宏: 建立一个字典,键是文件名,键值是时间属性,然后用内置的sorted()函数,根据字典的值进行排序,返回一个有序的列表 假设字典名字叫folder,有序列表叫order order = sorted(folder.items(),key=lambda e:e[1],reverse=False) key = lambda e:e[1]表示按值进行排序,也就是你需要的按时间属性排序,e[0]则是按键名进行排序 reverse=False可以省略不写,默认是升序排列,reverse=True就是降序排列了
固原市15012067902: VB 中x=x=y是赋值语句吗 - ?
登咽代宏: 是的,相当于 x = (x = y) 意思就是如果x和y相等,则给x赋值为True,反之如果x和y不相等,则给x赋值为False