python - 如何修复此代码中的此错误?索引超出范围
问题描述
我有一个函数可以让我放置任何字符串并按字母顺序返回高值。例如,如果我有一个像“Hello world”这样的句子并且我们认为它world
大于hello
然后我们将返回world
。
这个高值是通过我之前在 中设置的指数来衡量的string_index_in_char
。
def func(string):
char = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
split_string = string.split()
i = 0
x = ""
# get letters
string = string.lower()
for s in string:
if s in char:
string_index_in_char = char.index(s) + 1
else:
string_index_in_char = 0
x += str(string_index_in_char)
split_any_char_not_letters = x.split("0")
# convert string into interger in list
for i in range(0, len(split_any_char_not_letters)):
split_any_char_not_letters[i] = int(split_any_char_not_letters[i])
convert_to_int = split_any_char_not_letters
# (split_string, convert_to_int) comparison
n = convert_to_int.index(max(convert_to_int))
my_string = split_string[n]
print("%s -> %s" %(string, my_string.lower()))
#func("This Is my home")
func("Hello wOrld")
我收到此错误:
Traceback (most recent call last):
File "D:\courses\udacity-python\python\Exam\alphabet\alphabet 5.py", line 27, in <module>
func("This Is my home")
File "D:\courses\udacity-python\python\Exam\alphabet\alphabet 5.py", line 23, in func
my_string = split_string[n]
IndexError: list index out of range
当我键入任何其他单词"man i need a taxi up to Ubud"
或某些单词时,我不会出现任何问题。那么,尽管在我输入“hello world”时它没有向我发送此错误,但为什么它会收到此错误?
解决方案
按照@Parakiwi 的建议进行了更新:在您的示例中
拆分时会出现问题zero
:这是我的家,t 位于位置,20
因为您拆分0
它会通过向拆分列表添加额外的值来影响代码,从而导致错误。更改为除 char 索引之外的任意数字<<carefully chosen split criteria>>
都可以:
改变:
if s in char:
string_index_in_char = char.index(s) + 1
print(string_index_in_char)
else:
string_index_in_char = "^"
x += str(string_index_in_char)
split_any_char_not_letters = x.split("^")
前:
if s in char:
string_index_in_char = char.index(s) + 1
else:
string_index_in_char = 0
x += str(string_index_in_char)
split_any_char_not_letters = x.split("0")
但是,您需要处理两个单词相等的情况。
推荐阅读
- pdf-generation - R:在函数中创建 pdf 不起作用
- c++ - 使用前/后增量器分配容器迭代器
- excel - 在给定日期范围的情况下按季度设置开始和结束日期
- python - QAbstractItemModel 和 QModelIndex 之间的相互作用
- python - 有没有办法列出某些机器人命令的参数?
- javascript - 如何从包含值作为对象数组的对象中获取单个对象
- python - 根据另一列将 pandas 列重新组合为 2D 列表
- nginx - 使用 NGINX 上传图像文件需要很长时间?
- python - python-pandas 数据框中的加权平均值,权重已给定
- mysql - 如何禁用或更改共享服务器上单个用户的 MySQL 全文停用词?