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()