字符串是否为标题

Python挑战练习-进阶挑战37

编写一个程序来判断一个句子是否为标题文本。

  • 定义函数is_title(),参数为一个句子。

  • 在函数内,如果句子中的每个单词都以大写字母开头,则返回True,否则返回False

思路:

①要判断每个单词,首先想到要把输入的句子用split进行分割 

②判断分割后每个单词是否以大写字母开头

方法一:

def is_title(sentence):
    # 在此处编写代码
    words=sentence.split()
    for word in words:
        if word and not word[0].isupper():
            return False
    return True

# 从用户处获取输入
input_sentence = input()
# 调用函数
print(is_title(input_sentence))

解释:

  • 首先通过 words = sentence.split() 将输入的句子按照空格进行分割,得到一个包含句子中各个单词的列表。

  • 然后使用 for word in words: 循环遍历这个单词列表中的每一个单词。在循环中,通过 if word and not word[0].isupper(): 进行判断:word 用于判断当前单词是否为空字符串,因为如果是空字符串,获取其第一个字符去判断是否为大写字母会导致报错,所以先确保单词不为空not word[0].isupper() 用于判断当前单词的第一个字符是否不是大写字母,如果不是大写字母,就说明句子不符合每个单词都以大写字母开头的要求,此时直接返回 False。(即非空+不是大写字母开头,返回False

  • 当整个循环结束后,都没有发现不符合要求的单词,说明句子中的每个单词都以大写字母开头,此时返回 True

 方法二:使用列表推导式all函数判断(更简洁)

def is_title(sentence):
    words = sentence.split()
    return all(word and word[0].isupper() for word in words)

解释:

  • (word and word[0].isupper() for word in words) 来生成一个可迭代对象,它会遍历每个单词,对于每个单词,通过 word and word[0].isupper() 判断:如果单词不为空(word)且其第一个字符是大写字母(word[0].isupper()),就返回 True,否则返回 False,这样就生成了一个由一系列布尔值组成的可迭代对象

  • 最后使用 all 函数,all 函数会检查可迭代对象中的所有元素是否都为 True,如果都是 True,说明句子中的每个单词都满足以大写字母开头的条件,此时 all 函数返回 True,也就是整个句子符合标题文本的要求,直接将 all 函数的返回值作为 is_title 函数的返回值返回;如果可迭代对象中有元素为 Falseall 函数返回 False。

 方法二总结:对每个单词检查,返回一个由布尔值组成的对象,再用all函数检查这个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值