Python 对于CS圆中的循环,第7C节编码练习:一个三角形
下面是另一个for循环中的for循环的示例 示例 此代码打印5×5平方的1。Python 对于CS圆中的循环,第7C节编码练习:一个三角形,python,loops,for-loop,Python,Loops,For Loop,下面是另一个for循环中的for循环的示例 示例 此代码打印5×5平方的1。 注意:当我们将一个数字X乘以10并加上1时,我们实际上是在X的末尾加上一个1位数。例如,(1867*10)+1=18671 用两种方法修改上一个程序。首先,不是正方形,而是画一个三角形,形状如下:◤. 第二,它不应该总是有5行,而应该从input()获取所需的大小作为输入。例如,如果输入为3,则输出应为 111 11 1 到目前为止,我得到的代码是: X=input() for i in range(0, 3):
注意:当我们将一个数字X乘以10并加上1时,我们实际上是在X的末尾加上一个1位数。例如,(1867*10)+1=18671 用两种方法修改上一个程序。首先,不是正方形,而是画一个三角形,形状如下:◤. 第二,它不应该总是有5行,而应该从input()获取所需的大小作为输入。例如,如果输入为3,则输出应为
111
11
1
到目前为止,我得到的代码是:
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
我似乎不知道如何更改我到目前为止所拥有的代码以获得预期的输出?正如您所说,
10*X+1
意味着在X
的末尾添加额外的1
。您需要一个反向操作:如何删除数字的最后一位。提示:整数除法。谷歌“python整数除法”可以访问诸如
因此,您所要做的就是构造正确长度的
111…11
,然后逐个迭代打印和删除数字。这可以为您解决问题:
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”仅用于阶跃推导)此块非常混乱,下面是发生的情况:
X=input()
从输入中获取X
的值
for i in range(0, 3):
X = 0
现在将X
的值设置为0
三次(覆盖输入)
现在X
被设置为1
,然后是11
,然后是111
即使您打算为
循环嵌套,这也不会正常工作。相反,您希望使用切片操作符[::-1]
获取要向后循环的i
值。然后,应将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个空格更可取 如果你在做CS圈,那么这些答案可能包含你还没有接触过的代码,至少我没有,所以我将尝试用我迄今为止收集的知识来解释它(做CS圈的几周)
您忽略了第一个循环,这就是您的答案所在。请注意,如果将“打印”命令放在循环体之外,它将只输出:
111
这是因为第二个循环不在第一个循环的主体中,所以python只循环第一个循环3次,然后移动到第二个循环。相反,它应该是:
for i in range(0, 3):
X = 0
for j in range (0, 3):
X = (X*10)+1
print(X)
现在程序输出:
111
111
111
但您希望在每次再次调用print时减少一个数字。这是通过从第二个循环的范围尾值中减去“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圈中使用可视化工具,它可以帮助您更好地理解python中代码的执行方式,并可以为您的问题提供见解。祝你好运 以下是解决方案:
n=int(input())
for i in range(0, n):
X = 0
for j in range(0, n-i):
X = (X*10)+1
print(X)
最简单的方法是使用以下代码
p = int(input())
for i in range(0,p):
x = 0
for j in range(i,p):
x = (x*10)+1
print(x)
有些不相关的旁注:您应该始终使用4个空格缩进Python代码,如中所述。
n=int(input())
for i in range(0, n):
X = 0
for j in range(0, n-i):
X = (X*10)+1
print(X)
p = int(input())
for i in range(0,p):
x = 0
for j in range(i,p):
x = (x*10)+1
print(x)