Python 中的条件格式化字符串
Conditional Formatted Strings in Python
def secondCalculator(days, hours, minutes, seconds):
days = int(input("Days: ")) * 3600 * 24
hours = int(input("Hours: ")) * 3600
minutes = int(input("Minutes: ")) * 60
seconds = int(input("Seconds: "))
allSec = days + hours + minutes + seconds
if days == 1:
print(f"{days} Days,{hours} Hours, {minutes} Minutes, {seconds} Seconds are equal to {allSec} seconds.")
#### same use of if, for hours, minutes and seconds.
如果用户输入
第二个计算器(0,1,2,5)
输出应该是:
0天1小时2分5秒等于3725秒。
当用户输入 1 天时,应该打印“天”而不是“天”,时、分、秒也是如此。
事情是用 if 是可行的,但我想也许有更简单的方法来做到这一点。
如何让它根据用户输入的数字加上“s”后缀。
我们可以为它实现条件字符串格式化吗?
使用:
if days > 1:
suffix_day = 'days'
elif days == 0:
suffix_day = 'days'
else:
suffix_day = 'day'
然后使用:
print(f'{days} {suffix_day})
可能是这样的?将它包装在一个函数中可能有意义:
>>> days = 1
>>> f"day{('s', '')[days==1]}"
'day'
>>> days = 2
>>> f"day{('s', '')[days==1]}"
'days'
>>>
定义:
def s(val):
if val > 1:
return "s"
return ""
并将其用作:
print(f"{days} Day{s(days)}
def secondCalculator(days, hours, minutes, seconds):
days = int(input("Days: ")) * 3600 * 24
hours = int(input("Hours: ")) * 3600
minutes = int(input("Minutes: ")) * 60
seconds = int(input("Seconds: "))
allSec = days + hours + minutes + seconds
if days == 1:
print(f"{days} Days,{hours} Hours, {minutes} Minutes, {seconds} Seconds are equal to {allSec} seconds.")
#### same use of if, for hours, minutes and seconds.
如果用户输入 第二个计算器(0,1,2,5) 输出应该是: 0天1小时2分5秒等于3725秒。
当用户输入 1 天时,应该打印“天”而不是“天”,时、分、秒也是如此。 事情是用 if 是可行的,但我想也许有更简单的方法来做到这一点。
如何让它根据用户输入的数字加上“s”后缀。 我们可以为它实现条件字符串格式化吗?
使用:
if days > 1:
suffix_day = 'days'
elif days == 0:
suffix_day = 'days'
else:
suffix_day = 'day'
然后使用:
print(f'{days} {suffix_day})
可能是这样的?将它包装在一个函数中可能有意义:
>>> days = 1
>>> f"day{('s', '')[days==1]}"
'day'
>>> days = 2
>>> f"day{('s', '')[days==1]}"
'days'
>>>
定义:
def s(val):
if val > 1:
return "s"
return ""
并将其用作:
print(f"{days} Day{s(days)}