元素列表的直方图python

3pmvbmvn  于 2023-01-29  发布在  Python
关注(0)|答案(2)|浏览(138)

有人知道我怎么做这个吗

    • 输入**

说明:是第一个输入,显示接下来的输入行数-〉如果第一个输入为n,则所有输入行数为n +1<2> is the first input and shows the number of next inputs lines -> if the first input is n all the input lines are n+1

2 
purple 11,yellow 3,pink 1 
gray 8,blue 10,pink 12

最后2行是我的下一个输入(用户希望收集和保存他们的n天销售蜡笔,并获得他们的销售直方图
变成这样

    • 产出**

我想逐行打印行号及其单词列表及其编号的直方图(实际上是"*")

1
purple ***********
yellow ***
pink *
2
gray ********
blue **********
pink ************

我在获取输入方面没有问题,我只是不知道应该写什么代码来打印这个输出。
附言:我把销售额存储在一个列表中

mkshixfv

mkshixfv1#

你只需使用.split() method几次,用,分割行,然后用" "分割每个元素。然后你应该用* * 元素的第二部分打印颜色(元素的第一部分)。我使用了f strings,但你可以在print()中使用+。下面是代码:

lines = []
for i in range(int(input())):
    lines.append(input())
# making a list "lines" with all lines

for j in range(len(lines)):
    print(j + 1)  # line number
    for element in lines[j].split(","):
        print(f'{element.split(" ")[0]} {"*" * int(element.split(" ")[1])}')  # color and stars

希望这有帮助!:)

sulc1iza

sulc1iza2#

假设输入严格按照这种格式,您可以使用列表解析来存储所有输入行,然后在这些输入行上使用enumerate(),对于每一个输入行,用,拆分以获得每一项,然后用空格拆分每个元素以获得名称和金额。你可以用print()语句和字符串乘法来重复星号amt次,就像这样:

times = int(input())
lines = [input() for _ in range(times)]
for i, line in enumerate(lines):
    print(i+1)
    for item in line.split(','):
        name, amt = item.split(' ')
        print(name, '*' * int(amt))

正如Corralien在注解中提到的,如果愿意,可以将最后一行替换为f字符串,但是这不会改变功能:

print(f"{name:8} {'*' * int(amt)}")

相关问题