数组名称未在 python NameError 中定义
Posted
技术标签:
【中文标题】数组名称未在 python NameError 中定义【英文标题】:Array name is not defined in python NameError 【发布时间】:2013-01-24 22:07:56 【问题描述】:我是python的初学者,开始学习基础知识。我在 python 中有一个示例程序
#Simple Program Python
tf=float(input("Enter total time of run in seconds "))
delt = float(input("Enter the time step of run "))
dx = float(input("Enter the value of dx "))
xf = float(input("Enter the total length of a channel "))
n =float(tf/delt)
#t =range[n]
from array import array
m = xf/dx
for i in range(0,int(n)) :
t[i]=i*tf/n
print("THe total time of run is %r " %tf)
print("seconds")
print("The time step is %r" %delt)
print("Number of steps is %r" %n)
print("The number of space step in X direction is %r " %m)
在 for 循环中,当我尝试调用 t[i] 时,它会抛出错误“NameError: name 't' is not defined”。在一些***问题中,有人建议使用
from array import array
但我仍然收到错误消息。我从NameError: name 'array' is not defined in python 尝试了该解决方案。请帮助摆脱这个错误。
谢谢。
贾巴巴
【问题讨论】:
【参考方案1】:您必须先创建t
,然后才能对其进行索引,试试这个:
m = xf/dx
t = []
for i in range(0,int(n)) :
t.append(i*tf/n)
您也可以取出from array import array
行。您正在制作和使用列表而不是数组。如果你只是学习 python,你可能不需要数组和列表就可以了。
实际上,您甚至可以将整个 for 循环替换为:
m = xf/dx
t = [i*tf/n for i in range(int(n))]
这个版本使用列表推导来完成同样的事情。它几乎可以肯定更快并且(在我看来)更容易理解。
【讨论】:
非常感谢您的回复。当我实施您的建议时,它会显示“IndexError: list assignment index out of range”。 @Jdbaba 是的,我忘记了那部分,现在应该修复了。 @马特 非常感谢。现在这两种方法都可以完美运行。 @Matt 如何在 python 中编写这样的二维数组?For i = 0 To n A(i, 0) = 0 Next i
实际上我来自 Vb 背景并试图在 Python 中转换我现有的代码。谢谢。
@Jdbaba 我不确定您在寻找什么。您可能应该创建一个新问题。以上是关于数组名称未在 python NameError 中定义的主要内容,如果未能解决你的问题,请参考以下文章
NameError:名称“TypeError”未在 Apache 日志中定义
错误NameError:名称'head'未在jupyter笔记本上定义