python - 字符串索引行与没有索引的行
问题描述
我正在为一门课程做一项任务,该课程由一个程序组成,该程序只打印以定义的字母范围开头的单词。
我试图使用此代码失败:
sentence = input("Enter a one sentence quote, non-alpha separate words: ")
word = ""
for letter in sentence:
if letter.isalpha():
word += letter
else:
if word[0].lower() >= "h".lower():
print(word.upper())
word = ""
else:
word = ""
print(word.upper())
我遇到了一个index out of range
错误。
(word[0].lower() >= "h".lower())
当我用 line 替换line时,我才让它工作
(word.lower() >= "h".lower())
。
为什么寻址字符串索引的行不起作用?
解决方案
word
当为空字符串时,您将收到该错误。
如果您连续有两个非字母字符,就会发生这种情况。检查第一个字母后,您分配word = ""
. 然后当你处理下一个字符时,word
仍然是空的,所以没有word[0]
.
如果第一个字母至少是“h”`,那么整个单词也是如此,所以不需要索引它。写吧:
if word.lower() >= "h":
或者您可以先检查是否有任何内容word
:
if word and word[0].lower() >= "h":
没必要写"h".lower()
。已经是小写了。
由于您需要重新初始化word
它是否以范围内的字母开头,因此请取出该分配
所以更正后的代码应该是:
for letter in sentence:
if letter.isalpha():
word += letter
else:
if word and word[0].lower() >= "h":
print(word.upper())
word = ""
推荐阅读
- javascript - 在 ReactNative 中获取 SQL 查询的结果
- sql-server - Group by 月度数据查询
- spring - Gradle 与 SpringBoot 插件构建失败
- ruby-on-rails - 加载 puma-dev 时,Puma 未使用正确的 Gemset
- spring-boot - Spring JMS 监听器确认
- javascript - 我怎样才能实现!leaveguild
命令(离开指定的公会)进入我的 Discord (discord.js) 机器人? - prolog - SWI-Prolog 程序的工作方式不同,具体取决于我是否调用“make”。一开始
- python - 如何对数据框列 Python 进行词形还原
- c++ - 关于 std::unique_prt() 和 decltype()
- javascript - HTML5 DnD - 为什么在拖放元素后重影图像只能按预期工作?