2015-05-20 4 views
0

Я являюсь статистикой бакалавра, которая пытается научиться программированию на стороне. Я купил книгу python и встал на проблему.Python: Преобразование миль в километры

В этой главе представлены For Loops и предыдущие введенные функции.

Вопрос: напишите программу disttable.py, которая печатает таблицу километров в километры для расстояний между 100 и 1500 милями с интервалом в 100 миль. Напишите функцию для преобразования. Одна миля приблизительно 1,609 км.

Мой код до сих пор -

def mile(x): 
     return 1.609 * x 
def main(): 
    for n in range(100,100,1501): 
     print(n,miles(n)) 

Когда я звоню main(), ничего не происходит. Нет сообщения об ошибке.

Я попытался разместить цикл for внутри main(), однако я не уверен, как определить локальную переменную внутри main(), когда я перемещаю цикл for, поэтому я получаю сообщение об ошибке, в котором указана локальная переменная isn ' t определено.

+3

Изменить 'range (100,100,1501)' '' range (100,1501,100) ' –

+0

Вы поменяли место и шаг. – TigerhawkT3

+1

Кроме того, как только вы это исправите, вы получите «NameError», потому что «мили» и «миля» - это не одно и то же. – abarnert

ответ

0

Это потому, что вы пошаговый 1501 вместо 100:

def mile(x): 
     return 1.609 * x 
def main(): 
    for n in range(100,1501,100): 
     print(n,mile(n)) 
+0

Райан, Большое спасибо за вашу помощь. У меня просто было «дух!» момент. Предыдущие вопросы в этой главе я завершил с правильным синтаксисом диапазона (начало, остановка, шаг), но почему-то забыл сделать это на этом! –

0

Вы используете range неправильно. documentation говорит:

range(start, stop[, step])

Переход от 100 до 100 с шагом 1501 не дает никаких значений, так что ваш диапазон пуст, и цикл никогда не заканчивается. Возможно, вы имели в виду range(100, 1501, 100).

0

описаний списков теперь самый вещий способ сделать это

def mile(x): 
    return 1.6*x 
def main(): 
    print [(x, mile(x)) for x in range(100,1501,100)] 

Получается, они оценивают лениво, которые для больших списков, тем меньше давление памяти.

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