python中的数字模式使用给定的代码片段

时间:2015-06-08 15:23:27

标签: python

这个问题似乎很容易,比如打印像

这样的星形图案
1
22
333
4444

输入5

但诀窍是我们必须通过完成以下代码行来制作这种模式:

for i in range (1,input()):
    print {Here goes the code}

代码不能超过2行

Link to the question

2 个答案:

答案 0 :(得分:2)

使用*进行字符串重复:

for i in range (1,input()):               # Use int(input()) in 3.x
    print(str(i) * i)

答案 1 :(得分:1)

my_val = 10 次重复x次的表格的数字称为repdigits。您只需通过计算就可以生成这样的数字。挑战通过要求您生成y的repdigits来简化这一过程; x == y重复数字y

您可以使用公式y生成重复的1y次;功率为(10 ** y - 1) / 9的十分之一会产生y 1个零。减1并且你有y个9。将其除以y以获得9个:

y

现在,您只需将其乘以>>> y = 7 >>> 10 ** y 10000000 >>> 10 ** y - 1 9999999 >>> (10 ** y - 1) // 9 1111111 即可获得y重复的y位数字:

y

现在您有一个为任何给定>>> y * (10 ** y - 1) // 9 7777777 生成repdigit的公式:

y

不需要字符串操作;所需要的只是算术运算符。

演示:

for y in range(1, input()):
    print(y * (10 ** y - 1) // 9)