对于循环在CS圈子部分7C编码练习:一个三角形

时间:2015-08-19 18:41:11

标签: python loops for-loop

这是另一个for循环中for循环的一个例子。

示例 此代码打印5×5平方的 注意:当我们将数字X乘以10并加1时,我们基本上在X的末尾加上1位数。例如,(1867 * 10)+ 1 = 18671。

111
11
1

以两种方式修改以前的程序。首先,不要使用正方形,而是绘制一个形状如下的三角形:◤。其次,它不应该总是有5行,而应该从input()获取所需的大小作为输入。例如,如果输入为3,则输出应为

X=input()
for i in range(0, 3):
   X = 0
for j in range(0, 3):
   X = (X*10)+1
   print(X)

到目前为止,我所获得的代码是:

1
11
111

但是这段代码输出:

111
11
1

当预期输出应为:

select CustomFieldId, FieldName from qcdt_jobs_CustomFields where projectId=181;

我似乎无法弄清楚如何更改我目前为止获得预期输出的代码?

6 个答案:

答案 0 :(得分:1)

这可以解决您的问题:

def test(X,_range):
    x = X
    for j in range(0, _range):
        print int(str((x*10) +1) + ("1"*(_range-1-j)))

test(0,3)
>>> 
111
11
1
>>>

在每个循环步骤中,数字以(X*10)+1
开头 在下一步中,X已更改,您将数字1添加到右侧 如果想要撤消它,您需要使用("1"*(_range-1-j))

for迭代器每一步都会更改X内容。 (他不使用i和j,“For”仅用于步骤推导)

答案 1 :(得分:1)

以下是解决方案:

n=int(input()) 
for i in range(0, n):
    X = 0
    for j in range(0, n-i):
        X = (X*10)+1
    print(X) 

答案 2 :(得分:0)

正如您所说,10*X + 1意味着在1的末尾添加额外的X。您需要一个反向操作:如何删除数字的最后一位数。提示:整数除法。 Google" python integer division"到达Python integer division yields float等页面。

所以,你要做的就是构造正确长度的111...11,然后逐个迭代地打印和删除数字。

答案 3 :(得分:0)

这个区块非常混乱,这就是发生的事情:

X=input()

X获取input的价值。

for i in range(0, 3):
   X = 0

现在将X的值设置为0三次(覆盖您的输入)

for j in range(0, 3):
   X = (X*10)+1
   print(X)

现在X设置为1,然后设置为11,然后设置为111

即使你想嵌套for循环,这也不会表现得正确。相反,您希望使用切片运算符i使[::-1]值向后循环。然后,您应该将j的范围设为0到i

您还需要通过增加i范围内两个数字的值来进行补偿(否则最后一行将为零),但这将起作用:

for i in range(1, 6)[::-1]:
    X = 0
    for j in range(0, i):
        X = (X*10)+1
    print(X)

请注意,我将print移出j循环,因为这不是原始代码的原因(并生成错误的输出),请注意空格。出于这样的原因,使用4个空格优于2个空格。

答案 4 :(得分:0)

如果你正在做CS圈子而不是这些其他答案可能包含你还没有接触过的代码,至少我没有接触过,所以我会尝试用迄今为止收集到的知识来解释它(几个星期做CS圈子)。

你忽略了第一个循环,这就是你的答案所在。请注意,如果将print命令放在循环体之外,它只会输出:

111 

因为你的第二个循环不在第一个循环的主体中,所以python只循环第一个3x而不是第二个循环。相反它应该是:

for i in range(0, 3):
    X = 0
    for j in range (0, 3):
        X = (X*10)+1
    print(X) 

现在程序输出:

111
111
111 

但是每次再次调用打印时,你想要少一个数字。这是通过从第二个循环的范围尾值中减去“i”的值(因为它整齐地从0到2)来实现的。所以现在你有了:

for i in range(0, 3):
    X = 0
    for j in range(0, 3-i):
        X = (X*10)+1)
    print(X) 

最后输出是:

111
11
1 

Protip:使用CS Circles中的可视化工具,它可以帮助您更好地理解python中代码的执行方式,并可以提供对问题的洞察力。祝你好运!

答案 5 :(得分:0)

最简单的方法是使用以下代码;

p = int(input())
for i in range(0,p):
    x = 0
    for j in range(i,p):
        x = (x*10)+1
    print(x)