Используйте цикл for для отображения строковых значений в символах

#python

#python

Вопрос:

У меня есть список die_count = [0,0,0,0,0,0,0] ; элемент 0 не используется, поэтому игнорируйте это, элементы 1-6 важны. Таким образом, в основном элементы подключены к random.randint, которые генерируют случайное число, и в моей программе эти числа генерируются несколько раз при использовании пользователем.

Итак, в конце моей программы мне нужно показать эту статистику как таковую:

 Dice Roll Stats:
Face Frequency
 1 *
 2 ***
 3 *
 4 *
 5 **
 6 **
  

Итак, как вы можете видеть, список в основном представляет собой стороны игральных костей, а звездочки показывают, сколько раз эта грань была сгенерирована в ходе программы

Я пытался сделать это следующим образом, но иногда код не выполняется, иногда он выполняется и просто показывает целые числа.

 index = 1
while index < die_count[2] :
    for num in die_count :
        print(num)
        index  = 1
  

Комментарии:

1. Пожалуйста, не порти свои собственные сообщения. Публикуя здесь, вы предоставляете SO право распространять контент в соответствии с CC-by SA 4.0. Любой вандализм будет отменен.

Ответ №1:

Вы могли бы сделать что-то вроде следующего:

 die_count = [0,4,5,3,2,1,7]

for i in range(1, len(die_count)):
    print(i, die_count[i] * "*")
  

Он выведет:

 1 ****
2 *****
3 ***
4 **
5 *
6 *******
  

В каких случаях ваш код не работает? Из вопроса не ясно.

Также, почему вы инициируете die_count с 7 элементами, если вы не используете первый элемент. Это не имеет никакого смысла.

Комментарии:

1. Зачем использовать два оператора print? почему бы просто не print(i, die_count[i] * "*") ?

2. @7koFnMiP Причины нет, я изменил ее. Спасибо.

3. Также, возможно, он использует первый элемент, просто не для целей этого кода. Вопросы StackOverflow должны быть воспроизводимыми только

4. возможно, @7koFnMiP, но он заявляет, что «элемент 0 не используется, поэтому игнорируйте это», вот почему.

5. @DanyalKhan Я тоже не уверен. не стесняйтесь спрашивать здесь.

Ответ №2:

вы также можете стать немного более продвинутым и использовать это, позволяя пользователю определять количество выпадений кости, а не отображать его

 side = 0
diceList = [0]
while side !=6:
    side  =1
    diceCount = int(input(f'How many times did the dice roll on side {side}: '))
    diceList.append(diceCount)
for i in range(1, len(diceList)):
    print(i, diceList[i] * "*")
  

Комментарии:

1. сделал это, и это сработало как ожидалось, даже если вы его не используете, это может предложить некоторые новые приемы или показать вам то, о чем вы не думали, надеюсь, это поможет