0

ユーザーがサイコロゲーム「インビトウィーン」をプレイした結果を記録し、ゲームの最後にロールの統計を出力するコードをPYTHONで記述しようとしているので、基本的に私が印刷したいのは次のようなものですこれ

Game Summary
============
You played 3 Games:
|--> Games won: 0
|--> Games lost: 3

Dice Roll Stats:
Face Frequency
1
2 *
3
4 **
5 *
6 *
7
8 *
9 *
10 **
Thanks for playing!

サイコロが転がされるたびに「*」が印刷されますが、このような結果になり続けます..

Game Summary
============

You played a total of 3 games:
|--> Games won: 1
|--> Games lost: 2

Dice Roll Stats.

Face  Frequency
 1
 2
 ** 3
 4
 5
 * 6
 * 7
 **** 8
 * 9
 10
 Thanks for playing!

だから私がしたいのは、「*」が常にインデックス値の前に置かれるのではなく、「*」を垂直に並べてインデックス値 (1, 10) と同じにすることです。これが私のコードです:)

die1 = random.randint(1, 10)
dieCount[die1] = dieCount[die1] + 1
die2 = random.randint(1, 10)
dieCount[die2] = dieCount[die2] + 1
die3 = random.randint(1, 10)
dieCount[die3] = dieCount[die3] + 1
dieCount = [0,0,0,0,0,0,0,0,0,0,0]
index = 1
while index < len(dieCount):

    print(index)
    for n in range(dieCount[index]):   
        print('*', end='')
    index = index + 1
4

4 に答える 4

2

この方法で、行全体を一度に印刷できます。

for i, val in enumerate(dieCount[1:], 1):
    print('{} {}'.format(i, '*' * val))
于 2013-05-07T14:22:27.677 に答える
2

最初の print(index) が後に改行を自動的に追加しているようです。*を印刷する方法のように入れてみてください:

    print(index, end='')
于 2013-05-07T14:27:57.840 に答える
0

これを試して:

while index < len(dieCount):

    print(index,end ="")
    for n in range(dieCount[index]):   
        print('*', end='')
    print()
    index = index + 1
于 2013-05-07T14:21:41.423 に答える
0

同様の質問に対する私の回答を確認してください。

ここにコピー:

サイコロを転がすためのクラスを作成しました。ここでは、各ローラーと側面のサイコロの量をカスタマイズしたり、ロールを追跡したりできます。

import random
from collections import defaultdict

class roller():

    def __init__(self, number_of_dice=2, dice_sides=6):

        self.dice = defaultdict(dict)
        for die in range(number_of_dice):
            self.dice[die]['sides'] = dice_sides
            self.dice[die]['count'] = dict((k,0) for k in range(1, dice_sides+1))

    def roll(self, times=1):
        print ("Rolling the Dice %d time(s):" % times)
        total = 0
        for time in range(times):
            roll_total = 0
            print ("Roll %d" % (time+1))
            for die, stats in self.dice.items():
                result = random.randint(1, stats['sides'])
                roll_total += result
                stats['count'][result] += 1
                print (" Dice %s, sides: %s, result: %s" % (die, stats['sides'], result))
            print ("Roll %d total: %s" % (time+1, roll_total))
            total += roll_total
        print ("Total result: %s" % total)


    def stats(self):
        print ("Roll Statistics:")
        for die, stats in self.dice.items():
            print (" Dice %s, sides: %s" % (die, stats['sides'])) 
            for value, count in stats['count'].items():
                print ("  %s: %s times" % (value, count))

それを使用して:

>>> a = roller()
>>> a.roll(4)
Rolling the Dice 4 time(s):
Roll 1
 Dice 0, sides: 6, result: 6
 Dice 1, sides: 6, result: 3
Roll 1 total: 9
Roll 2
 Dice 0, sides: 6, result: 3
 Dice 1, sides: 6, result: 3
Roll 2 total: 6
Roll 3
 Dice 0, sides: 6, result: 1
 Dice 1, sides: 6, result: 6
Roll 3 total: 7
Roll 4
 Dice 0, sides: 6, result: 5
 Dice 1, sides: 6, result: 4
Roll 4 total: 9
Total result: 31
>>> a.stats()
Roll Statistics:
 Dice 0, sides: 6
  1: 1 times
  2: 0 times
  3: 1 times
  4: 0 times
  5: 1 times
  6: 1 times
 Dice 1, sides: 6
  1: 0 times
  2: 0 times
  3: 2 times
  4: 1 times
  5: 0 times
  6: 1 times
于 2013-05-07T14:26:30.660 に答える