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

时间:2021-12-20 19:47:39

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