2013-12-09 56 views
-4

我是一名初学者程序员。这里是我的代码:如何以相反顺序循环?

n = int(input()) 
from math import* 
for i in range(n): 
    print(n, "\t", log10(n)) 
    i = i + 1 
    n = n - 1 

它的输出是:

10 1.0 
9 0.9542425094393249 
8 0.9030899869919435 
7 0.8450980400142568  
6 0.7781512503836436 
5 0.6989700043360189  
4 0.6020599913279624 
3 0.47712125471966244 
2 0.3010299956639812 
1 0.0 

我希望它是:

1 0.0 
2 0.3010299956639812 
3 0.47712125471966244 
4 0.6020599913279624 
5 0.6989700043360189 
. 
. 
. 
9 0.9542425094393249 
10 1.0 
+0

'对于我在范围内(n,0,-1): 如果您想要倒退,请打印i'。范围(0,n,1)'前进。 –

回答

4

首先,你并不需要增加i,因为它是循环变量并依次设置为0到9中的每一个。

然后你的循环首先打印n。它从10开始,每次从它中减去一个,所以你得到的值是降序。试试这个:

for i in range(n): 
    print i+1, "\t", log10(i+1) 
+0

n = int(input()) while n!= 0: from numeric import * print(n,“\ t”,log10(n)) n = n-1 – ehsanb159

+1

您也可以'range 1,n + 1)'从1到n进行迭代。这里节省的不多,但在我心中更清楚一点。 – thegrinner

1

只需使用i作为循环您可变元素:

n=int(input()) 
import math 

for i in range(1,n+1): 
    print(i,"\t",math.log10(i)) 

为此,您可以在同一行,像这样:

print('\n'.join('{}\t{}'.format(i,math.log10(i)) for i in range(1,n+1))) 

最后,它不是一个好主意,习惯于做from math import *。使用*将导入模块中的所有项目放入同一个命名空间。模块中的任何类似的对象或函数名称将覆盖具有相同名称的其他函数/对象。