python - 如何避免 IndexError: list index out of range 当范围可以是随机拆分数量时,使用 Python 3?
问题描述
假设我有一个拆分字符串,最多可以包含 x 个单词,并且拆分集随机变化。(我在这个例子中使用 3。)如果在任何时候我必须检索第三个单词并且第三个单词不存在,我该如何避免“IndexError:list index out of range”。3 个字符串 wordOne、wordTwo 和 wordThree 必须存在以供以后使用。
userInput = input('Type up to 3 words : ')
userInputSplit = userInput.split()
wordOne = userInputSplit[0]
if userInputSplit[1] != None:
wordTwo = userInputSplit[1]
if userInputSplit[2] != None:
wordThree = userInputSplit[2]
print(wordOne + ' ' + wordTwo + ' ' + wordThree)
解决方案
您可以检查的长度userInputSplit
:
userInput = input('Type up to 3 words : ')
userInputSplit = userInput.split()
wordOne = userInputSplit[0]
if len(userInputSplit) == 1:
wordTwo = 'None'
wordThree = 'None'
elif len(userInputSplit) == 2:
wordTwo = userInputSplit[1]
wordThree = 'None'
else:
wordTwo = userInputSplit[1]
wordThree = userInputSplit[2]
上面的代码可以写成两行:
wordTwo = userInputSplit[1] if len(userInputSplit])>1 else 'None'
wordThree = userInputSplit[2] if len(userInputSplit])>2 else 'None'
你也可以使用 try-except:
try:
wordTwo = userInputSplit[1]
except IndexError:
wordTwo = 'None'
try:
wordThree = userInputSplit[2]
except IndexError:
wordThree = 'None'
推荐阅读
- python - 如何使用 Candlestick 从 plotly (Python) 制作动画
- javascript - 如何从浏览器启动批处理文件?
- google-chrome - chrome中页面源和框架源的区别
- python - 如何使用 Python 小写 json dict 中的所有键
- python-3.x - 我不知道为什么这两个代码在 python 中有不同的输出
- python-3.x - 无法使用 Python 登录加密的银行网站
- amazon-web-services - 由于 100% cpu 利用率导致 AWS Aurora 超时
- codeigniter - Codeigniter 用 ID 中的 OR 条件更新数据
- vue.js - Vuex 状态更改不会传播到 Vue 组件模板
- html - 在纯 CSS 滑出菜单上设置动画宽度时遇到问题