本篇文章给大家谈谈Python怎么看哪行代码出错,以及python报错信息怎么看对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
这个是哪里出错了 python的列表推导式?
题主你好,
你的问题出在不了解列表推导的语法.
先说一下你写的代码问题出在哪, 因为列表推导是一种语法糖, 语法糖这东西我的理解就是代码精简式的写法, 你可以简单的理解为正常的写法可能要10行, 用语法糖可能1行就搞定了. 优点是可以减少代码量, 缺点也显而易见,就是相对于常规写法一开始学起来理解要困难一些.
列表推导写法: n = [ j if j*5==10 ]
把你的这个1行的列表推导转化为常规写法要3行:
转化后的代码不知题主有没有看出问题,
这三行代码单看都没有问题, 第一行是给n赋一个空列表; 第二行是判断变量j*5的结果是10;第三行是结果第二行的条件成立,则将j追加到列表n中.
但问题也出来了, 第二行中, if的条件部分, 变量j的值是啥呀? 你前面都没有定义变量j,这里就直接用肯定是会出错的, 因为python中的变量是前面定义了之后, 后面才能使用.
举个小例子:
从上面图片可以看出, 在没有a赋值时,你直接用,会提示你a这个变量还没定义; 而你给a赋值3后, 再使用时,会直接输出a的值,3 就是这个道理.
-----
下面说下最常规的用法:
一般的列表推导都是for与if同时存在:
n = [j for j in range(10) if j*5==10]
照着上面讲的逻辑说, for语句中给变量j提供值, 然后if中把这个值代入条件表示式看是否成立,如果成立,则将j追加到列表n中.
我们把这个列表推导转换为常规写法:
上面代码就形成了一个完整的闭环了.
所以学习列表推导很关键的一点是题主能否在常规代码与列表推导之间进行转换, 如果可以的话,题主写完列表推导后可以将其转化为常规代码去看, 如果常规代码没问题, 则列表推导自然也就是对的.
-----
扩展阅读:
网页链接该链接中有一些简单的例子,里面既给出了列表推导的写法也给出了相对应的常规写法,题主可以研究一下这二者是怎么转换的, 不难.
=====
希望可以帮到题主, 欢迎追问.
帮我看看看这个Python代码哪里错了?
没看错这是求根公式吧?
其他没问题,关键在于这一句:
在python中,这种一行多个赋值的方法是不合法的,不能用逗号,得用分号:
或者你也可以分行写
完整代码:
from numpy.lib.scimath import sqrt
a=float(input());b=float(input());c=float(input())
d=0
if a==0:
d=(-1)*c/b
print(d)
elif b**2-4*a*c0:
x1=((-1)*b+sqrt(b**2-4*a*c))/2*a
x2=((-1)*b-sqrt(b**2-4*a*c))/2*a
print(x1,x2)
elif b*2-4*a*c==0:
d=((-1)*b)+sqrt(b**2-4*a*c)/2*a
print(d)
else:
x1=((-1)*b+sqrt(b**2-4*a*c))/2*a
x2=((-1)*b-sqrt(b**2-4*a*c))/2*a
print(x1,x2)
测试(我用的python2)
python的代码错误,可以帮我看看这一段代码哪里错了吗?
a=3
b=2
c=0
if a == 0 and b == 0 :
print("不是方程")
else:
d= b*b-4*a*c
if d = 0 :
print("x1=",-b+pow(d,1/2)/2/a)
print("x2=",-b-pow(d,1/2)/2/a)
else:
print("方程无实根")
PS:注意代码行的缩进,这在Python程序中表示层级关系;还有print语句后有英文状态下的括号
Python怎么看哪行代码出错的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python报错信息怎么看、Python怎么看哪行代码出错的信息别忘了在本站进行查找喔。