以下是有关骰子赌博 prize 金额的代码:

a, b, c = map(int, input().split())
if a == b and b == c:   #same all of dice numbers
    print(10000 + (a * 1000))
elif a == b or b == c:  #same two of dice numbers
    print(1000 + (b * 100))
elif a == c:            #same two of dice numbers
    print(1000 + (a * 100))
else:                   #no same number
    print(max(a, b, c)*100)

这相当于:

*_, a, b, c=sorted(input())
print(['1'+b, c][a < b < c]+'000'[a < c:])

但我不明白这是怎么回事

所以,我试图找出

`['1'+b, c][a < b < c]`

我发现这和

`c if a<b<c else '1'+b`

但我不能确定.

总之,关于

`'000'[a < c:]`

我试着输入a=c

`print('000'[a < c:])`

显示000.

我试过输入a<c,显示00

有人能告诉我这个表达吗?

推荐答案

原文不必要地晦涩难懂.它利用了以下事实:

int(False) == 0
int(True)  == 1

例如,

'000'[False:]  == '000'[0:] == '000'
'000'[True:]   == '000'[1:] == '00'

同样地,

['1' + b, c][False] == ['1' + b, c][0] == '1' + b
['1' + b, c][True]  == ['1' + b, c][1] == c

这里有一个等效的重写:

prefix = c if a < b < c else '1' + b
suffix = '00' if a < c else '000'
print(prefix + suffix)

Python相关问答推荐

取相框中一列的第二位数字

云上Gunicorn的Flask-socketIO无法工作

如何在Pygame中绘制右对齐的文本?

根据多列和一些条件创建新列

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

由于瓶颈,Python代码执行太慢-寻求性能优化

如何使用没有Selenium的Python在百思买着陆页面上处理国家/地区 Select ?

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

比较两个二元组列表,NP.isin

Select 用a和i标签包裹的复选框?

发生异常:TclMessage命令名称无效.!listbox"

无法使用requests或Selenium抓取一个href链接

使用NeuralProphet绘制置信区间时出错

根据列值添加时区

转换为浮点,pandas字符串列,混合千和十进制分隔符

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

当我try 在django中更新模型时,模型表单数据不可见

如何更新pandas DataFrame上列标题的de值?

如何在Python中获取`Genericums`超级类型?

名为__main__. py的Python模块在导入时不运行'