2017-10-24 3 views
2

私は2つのダイスをロールして得点を積算するプログラムを作成しようとしています。最終ポイントを維持する


更新は:

import random 

def roll_dice(): 
    total = 0 
    while(True): 
     print ("Enter '1' to roll 2 dice, enter '2' to stop rolling") 
     user_input = input() 

     if user_input == '1': 
      d1 = random.randint(1,6) 
      d2 = random.randint(1,6) 
      print (d1, d2) 

      score = 0 # score this round 
      if d1 == d2: 
       score = 10 
      elif d1 == 6 or d2 == 6: 
       score = 4 
      elif d1 + d2 == 7: 
       score = 7 
      total += score # update total 
      print ("The score this round is ", score) 
      print ("The total number of points is", total) 

     elif user_input == '2': 
      print ("Thanks for playing!") 
      break 

roll_dice() 
+0

ようこそ。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

答えて

1
  1. をゼロに戻るたびにtotalをリセットtotal = 0あなたのライン:どうもありがとうございます、私は:)

    このソリューションでは、働いていたそれを考え出しました2つのダイスが丸められます。ループwhileの外側にtotal = 0を入れてみてください。

  2. subtotal = sum(both_dice)この変数の目的は何ですかboth_dice?なぜそれはリストですか?あなたのコードでは、1つの数字だけを含むことも、何も含まないこともできます。


このプログラムは動作するはずです。なぜこのプログラムが動作するのかを慎重に考えてください。何かが不明であるかどうか尋ねる。

import random 

def roll_dice(): 
    total = 0 
    while(True): 
     print ("Enter '1' to roll 2 dice, enter '2' to stop rolling") 
     user_input = str(input()) # str() needed for Python 2 

     if user_input == '1': 
      d1 = random.randint(1,6) 
      d2 = random.randint(1,6) 
      print (d1, d2) 

      score = 0 # score this round 
      if d1 == d2: 
       score = 10 
      elif d1 == 6 or d2 == 6: 
       score = 4 
      elif d1 + d2 == 7: 
       score = 7 

      total += score # update total 
      print ("The score this round is ", score) 
      print ("The total number of points is", total) 

     elif user_input == '2': 
      print ("Thanks for playing!") 
      break 

roll_dice() 
+0

さて、whileループの外側(if文の後)にtotal = 0を入れてみましたが、私の合計はまだ更新されません。その他の提案はありますか? – qu2021

+0

@ qu2021私の更新を見てください。私は '+ ='演算子を使いました。 「Pythonで+正確に何をするのですか?」(https://stackoverflow.com/questions/4841436/what-exactly-does-do-in-python) – sam

+0

はい、これはかなり意味があります。どうもありがとうございます! – qu2021

0

このようにコードを書くことができます。

import random 

def roll_dice(): 
    total = 0 
    while True: 
     print ("Enter '1' to roll 2 dice, enter '2' to stop rolling") 
     user_input = input() 
     if user_input == 1: 
      # Get die_one and die_two entry 
      die_one, die_two = random.randint(1,6), random.randint(1,6) 
      print ("Got %d in die_one and %d in die_two" % (die_one, die_two)) 
      score = 0 
      if die_one == die_two: 
       score = 10 
      elif die_one == 6 or die_two ==6: 
       score = 4 
      elif die_one + die_two == 7: 
       score = 7 

      print ("The current score is %d" % score) 
      total += score 
      print ("The total score is %d " % total) 

     elif user_input == 2: 
      print ("Thanks for playing!") 
      break 

if __name__ == "__main__": 
    roll_dice() 

break文なし。

import random 

def roll_dice(): 
    total = 0 
    flag = True 
    while flag: 
     print ("Enter '1' to roll 2 dice, enter '2' to stop rolling") 
     user_input = input() 
     if user_input == 1: 
      # Get die_one and die_two entry 
      die_one, die_two = random.randint(1,6), random.randint(1,6) 
      print ("Got %d in die_one and %d in die_two" % (die_one, die_two)) 
      score = 0 
      if die_one == die_two: 
       score = 10 
      elif die_one == 6 or die_two ==6: 
       score = 4 
      elif die_one + die_two == 7: 
       score = 7 

      print ("The current score is %d" % score) 
      total += score 
      print ("The total score is %d " % total) 

     elif user_input == 2: 
      print ("Thanks for playing!") 
      flag = False 

if __name__ == "__main__": 
    roll_dice() 
+0

ループ中に上記の 'flag = True'のような変数を追加してください。 whileループでは、条件は 'while flag:'でなければなりません。 break文の代わりに 'flag = False'を使用します。 – kvivek

+0

@ qu2021:それがあなたに合っているなら、あなたは答えを受け入れてupvoteすることができます。 – kvivek

0

itertoolsを使用してリファクタリングして、金型を作成し、スコアリングロジックをホイストします。

import random 
import itertools as it 
import collections as ct 


def roll(n=2): 
    """Return a random result of two die.""" 
    return random.choice(list(it.product(range(1,7), repeat=n))) 


def score(die): 
    """Return a score for a given rule.""" 
    if len(set(die)) == 1: 
     return 10 
    elif 6 in die: 
     return 4 
    elif sum(die) == 7: 
     return 7 
    else: 
     return 0 


def dice_game(): 
    """Run game.""" 
    total = 0 
    while True: 
     user_input = input("Enter '1' to roll two die. Enter '2' to stop rolling. ") 
     if user_input == "1": 
      result = roll() 
      pts = score(result) 
      total += pts 

      print("Result:", result) 
      print ("The score this round is", pts) 
      print ("The total number of points is", total) 
      print() 

     elif user_input == "2": 
      print ("Thanks for playing!") 
      return 

dice_game() 
関連する問題