使用 if/else 语句和函数 lower()/isalpha() 和 upper() 打印所有以 "h&q


quote="Wheresoever you go, go with all your heart"
word=""
for character in quote:
if character.lower().isalpha()==True:
word+=character.lower()
else:
if word[0]>="h":
print(word.upper())
word=""
else:
word = ""

我只打印了前两个单词,然后:

回溯(最近一次调用(: 文件 "C:/Users/dubir/PycharmProjects/Läraprogrammering/Dubirka2.py",第 153 行,在 如果单词[0]>="h": 索引错误: 字符串索引超出范围

进程已完成,退出代码为 1

您的代码有两个主要问题:

  1. 如果最后一个字符是字母字符,那么它永远不会被打印出来,因为在那个单词之后,您将永远不会进入else大小写;
  2. word可能仍然有长度0,因为可以有两个非 alpha 的行。例如', '.

您可以使用以下命令修复代码本身:

word=""
for character in quote:
if character.isalpha():
word += character.lower()
else:
ifword andword[0] >= "h":
print(word.upper())
word=""
if word and word[0] >= "h":
print(word.upper())

但这仍然不是很声明性的。更好的方法可能是:

import re
rgx = re.compile(r'[A-Za-z]+')
for word in rgx.split(quote):
if word and word[0] >= 'h':
print(word.upper())

我们可以通过使用切片运算符使其更加优雅,从而减少检查次数

import re
rgx = re.compile(r'[A-Za-z]+')
for word in rgx.split(quote):
if word[:1] >= 'h':
print(word.upper())

相关内容

  • 没有找到相关文章

最新更新