python - 紧凑的if循环python
问题描述
我想用 Python 中的 def 返回这些结果:
title_case('a clash of KINGS', 'a an the of') # should return: 'A Clash of Kings'
title_case('THE WIND IN THE WILLOWS', 'The In') # should return: 'The Wind in the Willows'
title_case('the quick brown fox') # should return: 'The Quick Brown Fox'
解决方案可以是这样的:
def title_case(title, minor_words=''):
title = title.capitalize().split()
minor_words = minor_words.lower().split()
return ' '.join([word if word in minor_words else word.capitalize() for word in title])
我无法理解最后一行。我从中得到的是:如果 'word' 在 'minor_words' 中,则加入 'minor_words' ==> 这不是我们想要的。我们想加入“标题”
第二个问题是关于这个解决方案的第一行。为什么有=''?我试着写有和没有这个的“minor_words”,输出是一样的。
解决方案
如果“word”在“minor_words”中,则加入“minor_words”
不,不是这个意思。
word if word in minor_words
表示如果word
在 中minor_words
,我们加入word
(这是来自 的词title
)。
else word.capitalize()
表示如果word
不在,我们minor_words
加入大写单词。
为什么会有
=''
?
这为参数提供了默认值minor_words
。在最后一个示例中,您只使用一个参数调用函数:
title_case('the quick brown fox')
它相当于:
title_case('the quick brown fox', '')
如果没有默认值,您将收到一个错误,即没有提供足够的参数。
推荐阅读
- flutter - 专注于 TextFormField 时键盘闪烁
- tensorflow - 使用大数据集在 Google Colab TPU 上训练 seq2seq 模型 - Keras
- stack - 为什么6502在写入之前先从堆栈中读取?
- javascript - TypeError:未定义不是对象(评估“this.state”)
- javascript - 将 DOM 元素保存到 localStorage
- c# - Emgu.CV.Util.CvException: 'OpenCV: i < 0' 异常
- kotlin - Kotlin:将函数范围作为参数传递
- c# - 有没有办法使用库专门为 LED 引脚设置值?
- c# - Razor 视图 @model 找不到类型或命名空间名称“x”
- css - EXT JS:css和相对于父容器的位置