关于43课作业编程题1,代码出了问题,想请教一下
题目:定义一个单词(Word)类继承自字符串,重写比较操作符,当两个Word类对象进行比较时,根据单词的长度来进行比较大小。
加分要求:实例化时如果传入的是带空格的字符串,则取第一个空格前的单词作为参数。
我写的代码就是在“取空格之前部分”出了问题:
class Word(str):
def __new__(cls,arg=''):
for i in range(len(arg)):
print(i)
if arg.isspace():
arg = arg[:i]
return str.__new__(cls,arg)
结果显示索引错误,具体如下:
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/python043比较字符.py", line 23, in <module>
w2 = word('abcd ef')
File "C:/Users/Administrator/Desktop/python043比较字符.py", line 5, in __new__
if arg.isspace():
IndexError: string index out of range
我把这段改了一下:
class word(str):
def __new__(cls,arg=''):
for i in arg:
if i.isspace():
arg = arg[:arg.find(i)]
return str.__new__(cls,arg)
所以想请教一下,我之前的那一段代码哪里出了问题,为什么会索引错误{:10_243:} ? 你如果是找不同的话,那应该是return的位置不同 第一种方法
用索引位置的时候,由于出现空格后arg发生改变
原字符'abcd ef'长度为7,索引最大值为6
arg发生改变后变为'abcd'长度为4,索引最大值为3
在第6次迭代的时候,取索引值为5的值时引发报错
arg = 'abcd'
arg
出现索引错误 逃兵 发表于 2021-6-5 08:28
第一种方法
用索引位置的时候,由于出现空格后arg发生改变
原字符'abcd ef'长度为7,索引最大值为6
感谢解答!
页:
[1]