将数字列表转换为图形格式(#)



所以我试图让它在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()

但每当我运行它时,它都会出错,我真的陷入了该怎么办的困境。如果有人能帮我,我将不胜感激!感谢所有能够帮助我的人!

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))

最后请注意,您确实希望在number_cars函数中对hourlist进行排序,否则您将丢失哪个车辆计数属于哪个小时的信息。

相关内容

最新更新