数组名称未在 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笔记本上定义

菜单栏未在 python 中定义

python:NameError:全局名称'...'未定义[重复]

NameError:名称'python'未定义[关闭]

NameError:未定义全局名称“unicode” - 在 Python 3 中