【问题标题】:Array name is not defined in python NameError数组名称未在 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”。在一些stackoverflow问题中,有人建议使用

from array import array

但我仍然收到错误消息。我从NameError: name 'array' is not defined in python 尝试了该解决方案。请帮助摆脱这个错误。

谢谢。

贾巴巴

【问题讨论】:

    标签: 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 我不确定您在寻找什么。您可能应该创建一个新问题。
    猜你喜欢
    • 2011-10-29
    • 2013-01-26
    • 1970-01-01
    • 2012-01-31
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多