python中的基本转换

时间:2013-07-08 20:01:04

标签: python list-comprehension base digits

我需要帮助来理解这个问题。请不要发布答案,只有解决方法。

  

10分配给变量base。分配集{0,1,2,3,4,5,6,7,8,9}   到变量digits。现在使用理解来编写表达式   和basedigits,其值是最多三位数的集合   数字。你的表达应适用于任何基础。例如,如果你   而是将2分配给base并将{0,1}分配给数字,即您的值   表达式应为{0,1,2,3,4,5,6,7},因为这是一组   数字,基数为2,最多有三位数。

我尝试这个表达但我无法解决基础2问题。

base = 10
digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{(x*(base**2))+(y*(base**1))+(z*(base**0)) for x in digits for y in digits for z in digits if (x*(base**2))+(y*(base**1))+(z*(base**0))>((y*(base**1))+(z*(base**0)))}

3 个答案:

答案 0 :(得分:2)

  

...其值是所有最多 - 三位数字的集合。

重点补充。您需要包含值000 - 099(对于base = 10)。

看起来你差不多了。你理解中不需要过滤器。考虑一下for x in digits for y in digits for z in digitsdigits对{{1}}中不同值的结果。它应该是正确数量的值。

答案 1 :(得分:1)

您已经有了答案,只需删除if语句即可。试试这个:

{x*base**2+y*base**1+z*base**0 for x in digits for y in digits for z in digits}

如果您使用基数10和数字(0,1,2,3,4,5,6,7,8,9),您应该从0到999获得一个列表。如果您使用基数2和数字(0,1)你应该得到一个从0到7的列表。

答案 2 :(得分:1)

我猜你的作业已经完成,差不多两年后了:

基数中的3位数字是

形式的序列
base^digits

例如,要使基数为10的3位数字,可以输入python:

10**3

然后您可以使用范围功能将它们全部包含在内:

{x for x in range(10**3)}

这适用于任何基地。