2013-12-09 3 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

'для я в диапазоне (п, 0, -1): печать i' если вы хотите идти в обратном направлении. 'range (0, n, 1)' перейти вперед. –

ответ

4

Во-первых, вам не нужно увеличивать i, потому что это переменная цикла и устанавливается поочередно с 0 по 9.

Тогда ваша петля первая печать n. Он начинается с 10, и вы каждый раз вычитаете его из него, поэтому вы получаете значения в порядке убывания. Попробуйте это:

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

п = INT (вход()) , а п = 0: из математики импорта * печати (п, "\ т", log10 (п)) п = п-1 – ehsanb159

+1

Вы можете также сделать 'диапазон (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 *. Использование * приводит все элементы импортированного модуля в одно и то же пространство имен. Любые подобные имена объектов или функций в модуле будут перезаписывать другие функции/объекты с тем же именем.

Смежные вопросы