【Python项目文件报错】【Type Error】TypeError: ‘tuple‘ object does not support item assignment【及解决方法】

本文讲述了作者在使用Python进行量子计算项目时遇到的TypeError,原因是试图对元组结果进行赋值操作。通过打印数据类型和添加新变量存储元组中的数值,成功解决了这个问题。参考了《14天自造量子计算机》一书。
摘要由CSDN通过智能技术生成

一、问题描述

笔者最近在做一个Python量子计算相关的项目时,遇到如下报错

TypeError: 'tuple' object does not support item assignment

报错截图:

在这里插入图片描述

出错的部分代码如下:

def integral_orthonomality(x, n1, n2):
    return verphi(n1, x) * x * verphi(n2, x)


for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        result[0] /= L  # 出错行
        if result[0] < L:
            result[0] = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(result[0]))

其中变量result为一个积分运算的数值结果,目的是将 result[0] 输出,且在输出前先除以一个定值,并做近似

二、解决过程

1、 从报错信息中看出,引发该问题的原因是“元组对象不支持赋值操作”。首先(注释掉问题代码),添加几句,看数据类型

for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        print(result)
        print(type(result))
        print(type(result[0]))
        # result[0] /= L
        # if result[0] < L:
        #     result[0] = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(result[0]))

运行结果:

在这里插入图片描述
可以看出,变量result为包含2个浮点数的元组,但元组对象无法直接对其进行赋值。

2、 解决方法比较容易,另外定义一个变量float_result来存储原本 result[0] 的值即可。修改后的代码如下:

for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        float_result = float(result[0])
        float_result /= L
        if float_result < 1.0 * 10 ** -9:
            float_result = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(float_result))

报错消失,问题解决。

三、参考文献

《14天自造量子计算机(Python版)》,【日】远藤理平 著,陈欢 译,北京,中国水利水电出版社,2023年9月。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值