2016-03-25 2 views
0

Так я пытаюсь заставить его выглядеть в Python 3:Переводя список номеров в графическом формате (#)

How many hours are in your sample? 7 
Enter the count of cars for hour #1: 2 
Enter the count of cars for hour #2: 5 
Enter the count of cars for hour #3: 9 
Enter the count of cars for hour #4: 11 
Enter the count of cars for hour #5: 12 
Enter the count of cars for hour #6: 6 
Enter the count of cars for hour #7: 5 
Hour #1: # # 
Hour #2: # # # # # 
Hour #3: # # # # # # # # # 
Hour #4: # # # # # # # # # # # 
Hour #5: # # # # # # # # # # # # 
Hour #6: # # # # # # 
Hour #7: # # # # # 
Average: # # # # # # # 

И я написал это до сих пор:

def main(): 
    hourlist = number_cars() 
    graphic = hourlist 
    car_count_graphic_format(graphic) 



def number_cars(): 
    hours = input("How many hours are in your sample? ") 
    hours = int(hours) 
    hourlist = [] 
    for i in range(hours): 
     hourcount = input("Enter the count of cars for hour #" +str(i+1)+ ": ") 
     hourcount = int(hourcount) 
     hourlist.append(hourcount) 
    hourlist.sort() 
    return hourlist 


def car_average(car_count): 
    car_sum = 0 
    for position in range(len(car_count)): 
     car_sum = car_sum + car_count[position] 
    average = car_sum/len(car_count) 
    return average 

def car_count_graphic_format(graphic): 

    for x in range(graphic): 
     graphic = "#" * graphic 
     print("Hour #:" ,graphic,) 





main() 

Но всякий раз, когда я запускаю его, у него есть ошибка, и я честно застрял в этом вопросе о том, что делать. Если бы кто-то помог мне с этим, я был бы очень признателен! Спасибо всем, кто сможет мне помочь!

+0

Какая ошибка вы видите? – poke

+0

Пожалуйста, не удаляйте вопросы после получения ответа. – MattDMo

+0

Пожалуйста, не удаляйте вопросы после того, как они были разрешены, но [примите ответ] (http://meta.stackexchange.com/a/5235/141542). Удаление собственных вопросов только вредит себе, и вопросы не были даже плохими, поэтому нет причин их удалять. – poke

ответ

1
def car_count_graphic_format(graphic): 
    for x in range(graphic): 
     graphic = "#" * graphic 
     print("Hour #:" ,graphic,) 

Вы должны быть осторожны, вы повторно имя graphic слишком часто для различных запутанных вещей.

Функция принимает список количества автомобилей за каждый час, поэтому давайте назовем этот аргумент car_counts. Мы хотим напечатать строку для каждой записи, поэтому нам нужно перебирать элементы в car_counts. Обратите внимание, что мы не можем использовать range(car_counts) здесь, так как car_counts - это список, но range() ожидает номер. Вместо этого мы можем просто непосредственно перебирать список, чтобы получить каждый элемент в нем на каждой итерации. Поскольку мы также хотим принять во внимание час, мы используем enumerate(), чтобы получить индекс элемента в списке. Так как часы начинаются с 1, мы говорим enumerate() начать отсчет 1:

for hour, count in enumerate(car_counts, start=1): 
    graphic = '# ' * count 
    print('Hour #{}: {}'.format(hour, graphic)) 

Наконец, мы также хотим, чтобы выяснить, в среднем, так что подсчитать общее количество автомобилей, а затем разделить на число часов (длина списка), чтобы получить среднее количество автомобилей:

def car_count_graphic_format(car_counts): 
    total_cars = 0 
    for hour, count in enumerate(car_counts, start=1): 
     total_cars += count 
     graphic = '# ' * count 
     print('Hour #{}: {}'.format(hour, graphic)) 

    average = round(total_cars/len(car_counts)) 
    graphic = '# ' * average 
    print('Average: {}'.format(graphic)) 

Наконец отметим, что вы не хотите, чтобы отсортировать hourlist в функции number_cars, или вы потеряете информацию, которая Количество автомобилей относится к тому часу.

+0

Большое вам спасибо за помощь! – user6111799

+0

@ user6111799 Если этот ответ [адресован вашей проблеме] (http://stackoverflow.com/help/someone-answers), пожалуйста, рассмотрите [его принятие] (http://meta.stackexchange.com/questions/5234), нажав на галочке/галочке слева от ответа, повернув его зеленым. Это означает, что вопрос был удовлетворен вашим удовлетворением, а также награды [репутации] (http://stackoverflow.com/help/whats-reputation) как вам, так и тому, кто ответил. – MattDMo

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