python 中的基本转换



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

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

我尝试了这个表达式,但我无法解决基数 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)))}

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

强调添加。 您需要包含值 000 - 099 (对于 base = 10 (。

看起来你几乎已经得到了它。你的理解不需要过滤器。 考虑一下digits中的不同值,您将从for x in digits for y in digits for z in digits中获得多少结果。它应该是恰到好处的值数。

您已经有了答案,只需删除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 的列表。

我想你的功课已经完成了,差不多两年后:

基数中的 3 位数字的数量是以下形式的序列

base^digits

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

10**3

然后,您可以使用范围函数将它们全部包含:

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

这适用于任何基础。

相关内容

  • 没有找到相关文章

最新更新