此作业的说明为:
我们传入了两个布尔输入,冷和多雨。
您应该输出一个字符串:('cold'或'warm')'和'('rainy' 或“干燥”)。
(“冷”或“暖”)表示您应该使用两个单词中的一个,具体取决于 输入的布尔值上。
例如False,True =“温暖多雨”
我输入的代码是:
(`foo_id` IS NOT NULL) OR (`bar_id` IS NOT NULL)
代码是正确的,并且可以输出预期的内容,但是我想知道是否有更干净的方法编写此代码?我感觉好像有,但我还不太清楚。
答案 0 :(得分:5)
您可以将条件表达式与Python 3.6的f-strings结合使用,以单行代码构建字符串:
condition = f"{'cold' if isCold else 'warm'} and {'rainy' if isRainy else 'dry'}"
在Python 2中,%
string formatting operator也可以正常工作:
condition = "%s and %s" % (
'cold' if isCold else 'warm',
'rainy' if isRainy else 'dry'
)
答案 1 :(得分:3)
使用条件表达式。
condition += "cold" if isCold else "warm"
condition += " and " + ("rainy" if isRainy else "dry")
答案 2 :(得分:1)
我建议首先使用三元表达式来获取冷/暖和多雨/干燥的字符串值:
coldText = 'cold' if isCold else 'warm'
rainyText = 'rainy' if isRainy else 'dry'
然后使用string interpolation构造您的最终字符串,以使形式和内容分开:
finalText = '%s and %s' % (coldText, rainyText)
print(finalText)
答案 3 :(得分:0)
另一种方法是使用字典:
condition = {True: 'cold', False: 'warm'}[isCold] + ' and ' + {True: 'rainy', False: 'dry'}[isRainy]
缺少pythonic,因为不太明确:
一个人可以将True
和False
强制转换为1
和0
并将其用作索引。
condition = ['warm', 'cold'][isCold] + ' and ' + ['dry', 'rainy'][isRainy]
例如,在以下情况下,我经常将True
和False
强制转换为1
和0
。计算布尔列表中的True
个值。 (在列表中{sum()
)。