user2027690
user2027690

Reputation: 459

Simulate rolling dice in Python?

first time writing here.. I am writing a "dice rolling" program in python but I am stuck because can't make it to generate each time a random number

this is what i have so far

import random

computer= 0 #Computer Score
player= 0 #Player Score

print("COP 1000 ")
print("Let's play a game of Chicken!")

print("Your score so far is", player)

r= random.randint(1,8)

print("Roll or Quit(r or q)")

now each time that I enter r it will generate the same number over and over again. I just want to change it each time.

I would like it to change the number each time please help I asked my professor but this is what he told me.. "I guess you have to figure out" I mean i wish i could and i have gone through my notes over and over again but i don't have anything on how to do it :-/


by the way this is how it show me the program

COP 1000
Let's play a game of Chicken!
Your score so far is 0
Roll or Quit(r or q)r

1

r

1

r

1

r

1

I would like to post an image but it won't let me


I just want to say THANK YOU to everyone that respond to my question! every single one of your answer was helpful! **thanks to you guys I will have my project done on time! THANK YOU

Upvotes: 3

Views: 18049

Answers (5)

Novaid Akhtar
Novaid Akhtar

Reputation: 1

This is one of the easiest answer.

import random

def rolling_dice():

    min_value = 1

    max_value = 6

    roll_again = "yes"

    while roll_again == "yes" or roll_again == "Yes" or roll_again == "Y" or roll_again == "y" or roll_again == "YES":
        print("Rolling dices...")
        print("The values are...")
        print(random.randint(min_value, max_value))
        print(random.randint(min_value, max_value))
        roll_again = input("Roll the dices again? ")

rolling_dice()

Upvotes: 0

user9148266
user9148266

Reputation:

This is a python dice roller It asks for a d(int) and returns a random number between 1 and (d(int)). It returns the dice without the d, and then prints the random number. It can do 2d6 etc. It breaks if you type q or quit.

import random 
import string
import re
from random import randint

def code_gate_3(str1):
  if str1.startswith("d") and three == int:
    return True
  else:
    return False

def code_gate_1(str1):
    if str1.startswith(one):
      return True
    else:
      return False

def code_gate_2(str2):
    pattern = ("[0-9]*[d][0-9]+")
    vvhile_loop = re.compile(pattern)
    result = vvhile_loop.match(str1)
    if result:
      print ("correct_formatting")
    else:
      print ("incorrect_formattiing")

while True:
  str1 = input("What dice would you like  to roll? (Enter a d)")
  one, partition_two, three = str1.partition("d")
  pattern = ("[0-9]*[d][0-9]+")
  if str1 == "quit" or str1 == "q":
    break
  elif str1.startswith("d") and three.isdigit():
    print (random.randint(1, int(three)))
    print (code_gate_2(str1))
  elif code_gate_1(str1) and str1.partition("d") and one.isdigit():
    for _ in range(int(one)):
      print (random.randint(1, int(three)
  print (code_gate_2(str1))
  elif (str1.isdigit()) != False:
    break
  else:
    print (code_gate_2(str1))
  print ("Would you like to roll another dice?")
  print ("If not, type 'q' or 'quit'.")

print ("EXITING>>>___")

Upvotes: 0

Nix
Nix

Reputation: 58602

Not sure what type of dice has 8 numbers, I used 6.

One way to do it is to use shuffle.

import random
dice = [1,2,3,4,5,6]
random.shuffle(dice)
print(dice[0])

Each time and it would randomly shuffle the list and take the first one.

Upvotes: 1

Rushy Panchal
Rushy Panchal

Reputation: 17552

import random

computer= 0 #Computer Score
player= 0 #Player Score

print("COP 1000 ")
print("Let's play a game of Chicken!")

print("Your score so far is", player)

r= random.randint(1,8) # this only gets called once, so r is always one value

print("Roll or Quit(r or q)")

Your code has quite a few errors in it. This will only work once, as it is not in a loop. The improved code:

from random import randint
computer, player, q, r = 0, 0, 'q', 'r' # multiple assignment
print('COP 1000')  # q and r are initialized to avoid user error, see the bottom description
print("Let's play a game of Chicken!")
player_input = '' # this has to be initialized for the loop
while player_input != 'q':
    player_input = raw_input("Roll or quit ('r' or 'q')")
    if player_input == 'r':
        roll = randint(1, 8)
    print('Your roll is ' + str(roll))
    # Whatever other code you want
    # I'm not sure how you are calculating computer/player score, so you can add that in here

The while loop does everything under it (that is indented) until the statement becomes false. So, if the player inputted q, it would stop the loop, and go to the next part of the program. See: Python Loops --- Tutorials Point

The picky part about Python 3 (assuming that's what you are using) is the lack of raw_input. With input, whatever the user inputs gets evaluated as Python code. Therefore, the user HAS to input 'q' or 'r'. However, a way to avoid an user error (if the player inputs simply q or r, without the quotes) is to initialize those variables with such values.

Upvotes: 1

Developer
Developer

Reputation: 8400

Simply use:

import random
dice = [1,2,3,4,5,6]       #any sequence so it can be [1,2,3,4,5,6,7,8] etc
print random.choice(dice)

Upvotes: 1

Related Questions