gpt4 book ai didi

python - 如何在不使用 hist() 函数的情况下创建值及其计数的直方图?

转载 作者:行者123 更新时间:2023-12-04 01:06:25 25 4
gpt4 key购买 nike

我想不出一种方法来以范围格式打印值的直方图。我想写一个代码来输出项目和计数(乘以'x'))。如果一个项目不存在,输出将是 ''这是我到目前为止写的:

item=['15', '14', '13', '12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '0']
count=[1, 1, 1, 1, 3, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1]
max=15
min=0
def histogram( count, item ):
i=0
if(max-min<=5):
for n in count:
output = ''
times = n
while( times > 0 ):
output += '*'
times = times - 1
#print(item[i],output)
print(f'{item[i]:<10}',output)
i+=1
elif(max-min>5):
#print the histogram in range of 5s
histogram( count, item )

输出(如果 max-min<5)- 这不会发生在上面的程序中,因为 max-min 大于 5 但我想向您展示如果我们假设 max-min 小于它会是什么样子5:

15         *
14 *
13 *
12 *
11 ***
10
9
8
7 *
6
5
4 *
3
2
1
0 *

(最大-最小>5)的输出

10-15  *******
5-10 *
0-5 *

最佳答案

稍微清理一下您的代码。 '*'*x 将打印 '*' x 次。

这也处理了项目数量不是 5 的倍数的情况。

item=['15', '14', '13', '12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '0']
count=[1, 1, 1, 1, 3, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1]
maxi=15
mini=0
def histogram( count, item ):
if(maxi-mini<=5):
for i, c in zip(item, count):
output = '*'*c
print(f'{i:<10}',output)
elif(maxi-mini>5):
for index in range(0, len(item), 5):
#print the histogram in range of 5s
end_index = min(index+4, len(item)-1) # this is to handle if number of items is not divisible by 5
range_str = f'{item[end_index]}-{item[index]}'
output = '*'*sum(count[index:end_index+1])
print(range_str, output)
histogram( count, item )

这打印:

11-15 *******
6-10 *
1-5 *
0-0 *

如果我们先反转 itemcount 列表,效果会更好

item = list(reversed(item))
count = list(reversed(count))

稍微调整一下函数:

item=['15', '14', '13', '12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '0']
count=[1, 1, 1, 1, 3, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1]
maxi=15
mini=0
def histogram( count, item ):
if(maxi-mini<=5):
for i, c in zip(item, count):
output = '*'*c
print(f'{i:<10}',output)
elif(maxi-mini>5):
for index in range(0, len(item), 5):
#print the histogram in range of 5s
end_index = min(index+4, len(item)-1) # this is to handle if number of items is not divisible by 5
range_str = f'{item[index]}-{item[end_index]}'
output = '*'*sum(count[index:end_index+1])
print(range_str, output)

这打印

0-4 **
5-9 *
10-14 ******
15-15 *

关于python - 如何在不使用 hist() 函数的情况下创建值及其计数的直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66299751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com