这里的code_cademy一切正常吗?
cubes_by_four = [x*x*x for x in range(1,10) if (x*x*x) % 4 == 0]
for x in cubes_by_four:
print x
他们要我打印每个立方体,这个立方体可以被4整除,数字在1到10之间。我在这里做错了什么?
这个符号x^3
是否也可以获得x的立方体?如果是,那为什么会导致输出错误?
答案 0 :(得分:0)
你的范围已关闭。您需要range(1, 11)
,因为range()
的第二个参数是要排除的第一个值。 range(1, 10)
只会为您提供1到9的数字。
答案 1 :(得分:0)
如果要包含值10
,则必须将范围更改为range(1, 11)
,因为不的范围包含第二个参数。
在常规Python中,x^3
并不意味着取幂,而是二进制操作“按位异或”。这是SageMath(基于Python)中的取幂,但不是常规Python,它使用x**3
,或者在代码x*x*x
中。
由于您想要在一行中打印出所有列表,包括周围的括号,只需使用print x
打印即可。使用它代替最后两行代码。
答案 2 :(得分:0)
当你写range(1,10)
时,你包括1但排除10。
所以正确的代码是:
cubes_by_four = [x*x*x for x in range(1,11) if (x*x*x) % 4 == 0]
print cubes_by_four:
将x ** 3用于立方体将是一种很好的做法。
cubes_by_four = [x**3 for x in range(1,11) if (x**3) % 4 == 0]
答案 3 :(得分:0)
最后将该列表打印到控制台
>>> cubes_by_four = [x**3 for x in range(1,11) if x**3 % 4 == 0]
>>> print(cubes_by_four)
[8, 64, 216, 512, 1000]
它表示打印列表,而不是将列表中的每个项目打印到控制台
答案 4 :(得分:0)
range
的第二个参数不包含在范围内。
介于1和10之间吗?还是1到10?
介于1和10之间为range(2,10)
1到10是range(1,11)
答案 5 :(得分:0)
好的,要记住以下几点: -
1)如果您想要数字1-10,请执行range(1,11)
,因为排除了最后一个数字,而第一个数字(显然)包括在内。
2)而不是(x*x*x)
,你可以更好地使用: - pow(x,3)
,这实际上意味着x代表权力3或x立方。
所以,你的最终代码变成: -
cubes = [pow(x,3) for x in range(1,11) if pow(x,3) % 4 == 0]
我希望这可以帮助你,不断学习,卡住是编程世界美妙旅程的一部分。干杯! :)
答案 6 :(得分:0)
您在此处显示的代码存在两个不同的问题:
首先,将range(1,10)
更改为range(1,11)
,因为Python不包含第二个参数(10),而10 ^ 3平均除以4(1000/4 = 250)。< / p>
最后,本教程要求您在一行中打印所有数字,因此只需使用print cubes_by_four
代替您用于在不同行中打印每个数字的for
循环。< / p>
答案 7 :(得分:0)
脚本,打印从x = 1开始到x = 10结束的前10个立方体数字(x ** 3)
for x in range(1,11):
print(x*x*x)
答案 8 :(得分:0)
帮助我的事情是意识到范围排除 1,即:range(0,9)
只会做 0-8,这是正确的做法,除非您想要 0-8是 0-10。
答案 9 :(得分:-1)
for x in range(1,11):
print(x*x*x)