• python3中报错:TypeError: 'range' object doesn't support item deletion


    1、源代码

       以下代码执行时会报  range' object does not support item assignment 的错误,问题出现在第17行的runge(10);

    import unittest
    import random
    
    class TestSequenceFunctions(unittest.TestCase):
    
        def setUp(self):
            #初始化一个递增序列
            self.seq = range(10)
        def runTest(self):
            #从序列seq中随机选取一个元素
            element = random.choice(self.seq)
            #验证随机元素确实属于列表中
            # self.assertTrue(element in self.seq)
    
    class TestDictValueFormatFunchions(unittest.TestCase):
        def setUp(self):
            self.seq = range(10)#这里是出错的地方
        def test_shuffle(self):
            #随机打乱原seq的顺序
            random.shuffle(self.seq)
            self.seq.sort()
            self.assertEqual(self.seq,range(10))
            #验证执行函数是跑出了TypeError异常
            self.assertEqual(TypeError,random.shuffle,(1,2,3))
    
    if __name__ == "__main__":
        unittest.main()

    2、修改后的代码

             在17行的基础上添加list(range(10))就ok了。

                  错误原因:是python3中range不返回数组对象,而是返回range对象

    import unittest
    import random
    
    class TestSequenceFunctions(unittest.TestCase):
    
        def setUp(self):
            #初始化一个递增序列
            self.seq = range(10)
        def runTest(self):
            #从序列seq中随机选取一个元素
            element = random.choice(self.seq)
            #验证随机元素确实属于列表中
            # self.assertTrue(element in self.seq)
    
    class TestDictValueFormatFunchions(unittest.TestCase):
        def setUp(self):
            self.seq = list(range(10))#这里是修改过的地方
        def test_shuffle(self):
            #随机打乱原seq的顺序
            random.shuffle(self.seq)
            self.seq.sort()
            self.assertEqual(self.seq,range(10))
            #验证执行函数是跑出了TypeError异常
            self.assertEqual(TypeError,random.shuffle,(1,2,3))
    
    if __name__ == "__main__":
        unittest.main()
  • 相关阅读:
    C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理
    sctp和tcp的区别
    kmalloc/kfree,vmalloc/vfree函数用法和区别
    C语言中volatile关键字的作用
    嵌入式开发之NorFlash 和NandFlash
    linux中断--中断嵌套&中断请求丢失
    Linux 套接字编程中的 5 个隐患
    socket编程中write、read和send、recv之间的区别
    HTTP/1.1 Range和Content-Range
    探讨read的返回值的三种情况
  • 原文地址:https://www.cnblogs.com/zhanghaoyang/p/10271949.html
Copyright © 2020-2023  润新知