这是另一个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;
我似乎无法弄清楚如何更改我目前为止获得预期输出的代码?
答案 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)