Python 遍历简单列表时出现ValueError

Python 遍历简单列表时出现ValueError,python,python-3.x,Python,Python 3.x,我正在尝试(作为一个新的Pythoneer)将一个旧的家庭作业从Java翻译成Python。当我尝试遍历一个列表时,我遇到了一个类型错误。它声称我的索引没有使用整数值,但我看不出我怎么没有。我可能包含了太多的代码,但以防万一错误不在我认为的地方(TypeError在最后一行上)): def电源(x,y): 如果isinstance(y,int): 溶液=x 如果y==0: 返回1 其他: 对于范围(1,y)内的i: 解决方案=解决方案*x 返回溶液 其他: raise TypeError(“幂:

我正在尝试(作为一个新的Pythoneer)将一个旧的家庭作业从Java翻译成Python。当我尝试遍历一个列表时,我遇到了一个类型错误。它声称我的索引没有使用整数值,但我看不出我怎么没有。我可能包含了太多的代码,但以防万一错误不在我认为的地方(TypeError在最后一行上)):

def电源(x,y):
如果isinstance(y,int):
溶液=x
如果y==0:
返回1
其他:
对于范围(1,y)内的i:
解决方案=解决方案*x
返回溶液
其他:
raise TypeError(“幂:非整数幂参数”)
def阶乘(x):
如果isinstance(x,int)和x>=0:
如果x==1或x==0:
返回1
其他:
解=int(x)
当x>1时:
溶液=溶液*(x-1)
x-=1
返回溶液
其他:
raise TypeError(“阶乘:参数必须是正整数”)
def abs(x):
如果x<0:
x=-x
返回x
#计算模型的系数
#Sin(x)的泰勒级数。
#中心参数必须为0、pi/4、pi或3pi/2
def coef_计算(中心):
coef=[1]*32
i=int(0)
c_temp=1#计算系数的临时存放处
如果中心位于[0,PI/4,PI,3*PI/2]:
#麦克劳伦级数(中心=0)
如果中心=0:
当c_温度>1.0e-31时:
c_温度=功率(-1,i)/阶乘(2*i+1)
系数[i]=c_温度
i+=1
其他:
raise VALUERROR(“参数不在[0,pi/4,pi,3pi/2]中”)
返回系数
#常数
PI=3.1415926535897932
SQRT_TWO=1.41421356237309504880
如果名称=“\uuuuu main\uuuuuuuu”:
打印(电源(4,2))
印刷品(阶乘(4))
打印(abs(-0))
系数=系数计算(0)
对于coef中的x:
打印(coef[x]+“\n”)
  • 我运行了您的代码变量
    coef
    中有浮点值
  • 我要做的是以下几点:

    for i in range(len(coef)):
        print(coef[i],"\n")
    
  • 这种方式通过索引而不是通过值访问列表

  • 如果要按值访问它,请执行以下操作:

    for i in range(len(coef)):
        print(i,"\n")
    
      • 我运行了您的代码变量
        coef
        中有浮点值
      • 我要做的是以下几点:

        for i in range(len(coef)):
            print(coef[i],"\n")
        
      • 这种方式通过索引而不是通过值访问列表

      • 如果要按值访问它,请执行以下操作:

        for i in range(len(coef)):
            print(i,"\n")
        

      当您在coef中为x执行
      操作时:
      x
      是迭代通过
      coef
      的项,而不是其索引,因此当您执行
      coef[x]
      操作时,它期望
      x
      coef
      的索引,这会导致错误。如果要同时获取索引和项目,请在enumerate(coef)中为i,x使用
      其中
      i
      是索引,
      x
      是项目

      不过,您的代码很容易修复。只需将最后一行改为:

      print(x)
      

      您不需要“\n”,因为每个打印语句都是一个新行。

      当您在coef中为x执行
      操作时:
      x
      是在
      coef
      中迭代的项,而不是它的索引,因此当您执行
      coef[x]
      时,它期望
      x
      coef
      的索引,这会导致错误。如果要同时获取索引和项目,请在enumerate(coef)中为i,x使用
      其中
      i
      是索引,
      x
      是项目

      不过,您的代码很容易修复。只需将最后一行改为:

      print(x)
      


      您不需要“\n”,因为每个print语句都是一个新行。

      您得到的是哪一行
      valueerror
      @Jai将在其中添加该行。这是最后一行。奇怪的是,当我运行这段代码时,我得到了一个TypeError,而不是ValueError。你的错误信息是什么?我的是
      列表索引必须是整数或切片,而不是float
      x
      coef
      的成员,而不是它的索引。您只需要打印(x,“\n”)@Kevin我说错了,您看到的错误就是我得到的。将编辑。。。同样,您要得到的
      valueerror
      @Jai将添加该行。这是最后一行。奇怪的是,当我运行这段代码时,我得到了一个TypeError,而不是ValueError。你的错误信息是什么?我的是
      列表索引必须是整数或切片,而不是float
      x
      coef
      的成员,而不是它的索引。您只需要打印(x,“\n”)@Kevin我说错了,您看到的错误就是我得到的。将编辑。。。再说一次。那只会给你
      SyntaxError:keyword不能是一个表达式
      老兄,我在那里输入了一个错误。。。现在就试试吧。。,。我刚刚编辑了我的答案。。。。我现在运行没有错误好的,效果更好。但是,仅仅为了逐个索引访问列表的元素而遍历列表的索引不是有点迂回吗?为什么不直接对coef:print(x,“\n”)中的x执行
      ?是的,您可以对coef:print(x,“\n”)中的x执行
      。。。但我以为你想通过索引访问它“我以为你想通过索引访问它”。如果说“你”,你是指我:不,我更喜欢在可能的情况下直接迭代值。如果说“你”,你指的是OP:不是我对这个问题的解释,而是谁知道他真正的感受。如果说“你”,你指的是对惯用风格感兴趣的一般社区:他们也喜欢在可能的情况下直接迭代值,这只会给你
      SyntaxError:keyword不能是一个表达式
      dude我在那里输入了一个错别字。。。现在就试试吧。。,。我刚刚编辑了我的答案。。。。我现在运行没有错误好的,效果更好。但是,仅仅为了逐个索引访问列表的元素而遍历列表的索引不是有点迂回吗?为什么不直接对coef:print(x,“\n”)中的x执行
      ?是的,您可以对coef:print(x,“\n”)中的x执行
      。。。但我以为你想通过索引访问它“我以为你想通过索引访问它”。如果说“你”,你是指我:不,