Dice rolling game












5














I am new to programming and I tasked myself with the challenge of making a dice rolling game. It goes from 1 to 6 and it first asks you if you're interested in playing. Then it rolls. Then it spits out the number, and asks if you want to play again.



I got it to work, however, I can guarantee that it could be shorter. I am COMPLETELY stumped on this part. I would honestly like critique on how to clean up my programming. I know I'm brand new, but I would like to learn efficiency as well as the basics if possible.



I programmed in Python version 3.



import random
game_start = input("Would you like to roll the dice?")

def dice_roll():
print("Your number is: " + str(random.randint(1,6)))
global play_again
play_again = input("Would you like to play again?")

if game_start == "yes":
dice_roll()
while play_again == "yes":
dice_roll()
elif game_start == "no":
print("Game Over")
else:
print("Input not recognized")









share|improve this question















migrated from stackoverflow.com Aug 7 '17 at 1:50


This question came from our site for professional and enthusiast programmers.















  • the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
    – José Garcia
    Aug 7 '17 at 1:10










  • @JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
    – thesolidmoose
    Aug 7 '17 at 1:17










  • using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
    – diek
    Aug 7 '17 at 1:26










  • @diek thank you! I will avoid using globals
    – thesolidmoose
    Aug 7 '17 at 2:45
















5














I am new to programming and I tasked myself with the challenge of making a dice rolling game. It goes from 1 to 6 and it first asks you if you're interested in playing. Then it rolls. Then it spits out the number, and asks if you want to play again.



I got it to work, however, I can guarantee that it could be shorter. I am COMPLETELY stumped on this part. I would honestly like critique on how to clean up my programming. I know I'm brand new, but I would like to learn efficiency as well as the basics if possible.



I programmed in Python version 3.



import random
game_start = input("Would you like to roll the dice?")

def dice_roll():
print("Your number is: " + str(random.randint(1,6)))
global play_again
play_again = input("Would you like to play again?")

if game_start == "yes":
dice_roll()
while play_again == "yes":
dice_roll()
elif game_start == "no":
print("Game Over")
else:
print("Input not recognized")









share|improve this question















migrated from stackoverflow.com Aug 7 '17 at 1:50


This question came from our site for professional and enthusiast programmers.















  • the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
    – José Garcia
    Aug 7 '17 at 1:10










  • @JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
    – thesolidmoose
    Aug 7 '17 at 1:17










  • using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
    – diek
    Aug 7 '17 at 1:26










  • @diek thank you! I will avoid using globals
    – thesolidmoose
    Aug 7 '17 at 2:45














5












5








5







I am new to programming and I tasked myself with the challenge of making a dice rolling game. It goes from 1 to 6 and it first asks you if you're interested in playing. Then it rolls. Then it spits out the number, and asks if you want to play again.



I got it to work, however, I can guarantee that it could be shorter. I am COMPLETELY stumped on this part. I would honestly like critique on how to clean up my programming. I know I'm brand new, but I would like to learn efficiency as well as the basics if possible.



I programmed in Python version 3.



import random
game_start = input("Would you like to roll the dice?")

def dice_roll():
print("Your number is: " + str(random.randint(1,6)))
global play_again
play_again = input("Would you like to play again?")

if game_start == "yes":
dice_roll()
while play_again == "yes":
dice_roll()
elif game_start == "no":
print("Game Over")
else:
print("Input not recognized")









share|improve this question















I am new to programming and I tasked myself with the challenge of making a dice rolling game. It goes from 1 to 6 and it first asks you if you're interested in playing. Then it rolls. Then it spits out the number, and asks if you want to play again.



I got it to work, however, I can guarantee that it could be shorter. I am COMPLETELY stumped on this part. I would honestly like critique on how to clean up my programming. I know I'm brand new, but I would like to learn efficiency as well as the basics if possible.



I programmed in Python version 3.



import random
game_start = input("Would you like to roll the dice?")

def dice_roll():
print("Your number is: " + str(random.randint(1,6)))
global play_again
play_again = input("Would you like to play again?")

if game_start == "yes":
dice_roll()
while play_again == "yes":
dice_roll()
elif game_start == "no":
print("Game Over")
else:
print("Input not recognized")






python python-3.x dice






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 19 at 13:54









Community

1




1










asked Aug 7 '17 at 0:56









thesolidmoose

69227




69227




migrated from stackoverflow.com Aug 7 '17 at 1:50


This question came from our site for professional and enthusiast programmers.






migrated from stackoverflow.com Aug 7 '17 at 1:50


This question came from our site for professional and enthusiast programmers.














  • the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
    – José Garcia
    Aug 7 '17 at 1:10










  • @JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
    – thesolidmoose
    Aug 7 '17 at 1:17










  • using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
    – diek
    Aug 7 '17 at 1:26










  • @diek thank you! I will avoid using globals
    – thesolidmoose
    Aug 7 '17 at 2:45


















  • the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
    – José Garcia
    Aug 7 '17 at 1:10










  • @JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
    – thesolidmoose
    Aug 7 '17 at 1:17










  • using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
    – diek
    Aug 7 '17 at 1:26










  • @diek thank you! I will avoid using globals
    – thesolidmoose
    Aug 7 '17 at 2:45
















the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
– José Garcia
Aug 7 '17 at 1:10




the if statements could be added inside the dice_roll() function, set up a while True: loop and put the dice roll part there, then if the if statements are true, just return
– José Garcia
Aug 7 '17 at 1:10












@JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
– thesolidmoose
Aug 7 '17 at 1:17




@JoséGarcia okay, I'm not sure if I'm understanding what you mean. Could you perhaps lay it out? Because I am not entirely sure where youre going with this. Thank you so much for replying though.
– thesolidmoose
Aug 7 '17 at 1:17












using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
– diek
Aug 7 '17 at 1:26




using the global, is something you should avoid, there are lots of blogs explaining problems relate to the use global variables
– diek
Aug 7 '17 at 1:26












@diek thank you! I will avoid using globals
– thesolidmoose
Aug 7 '17 at 2:45




@diek thank you! I will avoid using globals
– thesolidmoose
Aug 7 '17 at 2:45










3 Answers
3






active

oldest

votes


















6














import random

def dice_roll():
while True:
print("Your number is: " + str(random.randint(1,6)))
play_again = input("Would you like to play again? ")
while play_again != 'yes':
if play_again == 'no':
return print("Game Over")
else:
print("Input not recognized")
play_again = input("Would you like to play again? ")

def main():
game_start = input("Would you like to roll the dice?")
if game_start == 'yes':
dice_roll()
else:
print('too bad')

if __name__ == '__main__':
main()


the while inside dice_roll() will roll the dice as long as you want to play again. I made your inicial input part of main(), so if you want to use this program from another one, it doesn't do anything, but you still get to use the dice_roll() function.






share|improve this answer





















  • Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
    – thesolidmoose
    Aug 7 '17 at 2:31










  • Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
    – thesolidmoose
    Aug 7 '17 at 2:32






  • 1




    @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
    – bitcell
    Aug 7 '17 at 7:07












  • I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
    – Aziuth
    Aug 7 '17 at 15:33



















1














Perhaps you could put it all in one loop. Maybe roll it all into the function or put the function code where the 'while' loop is.



Something like: if yes, then print("Your number is: " + str(random.randint(1,6)))



Also, you might not need a "no" option at all. It could just have what you wrote for "yes" and have anything else be "game over". But I see that maybe the "input not recognized" is a part of your task.






share|improve this answer





























    1














    Merge game_start and play_again into one variable - note they already mean almost the same thing, and you never need both at the same time. So call it play or wants_to_play or keep_playing etc.



    That will allow you to collapse some of your repeated if statements and loops.



    Note also that dice_roll doesn't just roll the dice - it also asks if you want to play again. Don't do that - a function should just do one thing, not two. Maybe dice_roll should just do print("Your number is: " + str(random.randint(1,6))), or, in fact, maybe it should just return random.randint(1,6) and let other code worry about display - imagine if you wanted to make a GUI - try to keep the UI code from spreading everywhere.



    so think how the game should work (this is not python):



    wants_to_play = ask "do you want to play"
    while wants_to_play
    roll dice, display roll
    wants_to_play = ask "play again"


    That should be all there is basically, right?
    Can you fill it in from there? Turn that into Python?



    P.S. maybe ask could be a function, that handles the bad input etc, and converts the answer to true/false.






    share|improve this answer




















      protected by Simon Forsberg Oct 11 at 14:02



      Thank you for your interest in this question.
      Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).



      Would you like to answer one of these unanswered questions instead?














      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      6














      import random

      def dice_roll():
      while True:
      print("Your number is: " + str(random.randint(1,6)))
      play_again = input("Would you like to play again? ")
      while play_again != 'yes':
      if play_again == 'no':
      return print("Game Over")
      else:
      print("Input not recognized")
      play_again = input("Would you like to play again? ")

      def main():
      game_start = input("Would you like to roll the dice?")
      if game_start == 'yes':
      dice_roll()
      else:
      print('too bad')

      if __name__ == '__main__':
      main()


      the while inside dice_roll() will roll the dice as long as you want to play again. I made your inicial input part of main(), so if you want to use this program from another one, it doesn't do anything, but you still get to use the dice_roll() function.






      share|improve this answer





















      • Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
        – thesolidmoose
        Aug 7 '17 at 2:31










      • Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
        – thesolidmoose
        Aug 7 '17 at 2:32






      • 1




        @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
        – bitcell
        Aug 7 '17 at 7:07












      • I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
        – Aziuth
        Aug 7 '17 at 15:33
















      6














      import random

      def dice_roll():
      while True:
      print("Your number is: " + str(random.randint(1,6)))
      play_again = input("Would you like to play again? ")
      while play_again != 'yes':
      if play_again == 'no':
      return print("Game Over")
      else:
      print("Input not recognized")
      play_again = input("Would you like to play again? ")

      def main():
      game_start = input("Would you like to roll the dice?")
      if game_start == 'yes':
      dice_roll()
      else:
      print('too bad')

      if __name__ == '__main__':
      main()


      the while inside dice_roll() will roll the dice as long as you want to play again. I made your inicial input part of main(), so if you want to use this program from another one, it doesn't do anything, but you still get to use the dice_roll() function.






      share|improve this answer





















      • Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
        – thesolidmoose
        Aug 7 '17 at 2:31










      • Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
        – thesolidmoose
        Aug 7 '17 at 2:32






      • 1




        @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
        – bitcell
        Aug 7 '17 at 7:07












      • I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
        – Aziuth
        Aug 7 '17 at 15:33














      6












      6








      6






      import random

      def dice_roll():
      while True:
      print("Your number is: " + str(random.randint(1,6)))
      play_again = input("Would you like to play again? ")
      while play_again != 'yes':
      if play_again == 'no':
      return print("Game Over")
      else:
      print("Input not recognized")
      play_again = input("Would you like to play again? ")

      def main():
      game_start = input("Would you like to roll the dice?")
      if game_start == 'yes':
      dice_roll()
      else:
      print('too bad')

      if __name__ == '__main__':
      main()


      the while inside dice_roll() will roll the dice as long as you want to play again. I made your inicial input part of main(), so if you want to use this program from another one, it doesn't do anything, but you still get to use the dice_roll() function.






      share|improve this answer












      import random

      def dice_roll():
      while True:
      print("Your number is: " + str(random.randint(1,6)))
      play_again = input("Would you like to play again? ")
      while play_again != 'yes':
      if play_again == 'no':
      return print("Game Over")
      else:
      print("Input not recognized")
      play_again = input("Would you like to play again? ")

      def main():
      game_start = input("Would you like to roll the dice?")
      if game_start == 'yes':
      dice_roll()
      else:
      print('too bad')

      if __name__ == '__main__':
      main()


      the while inside dice_roll() will roll the dice as long as you want to play again. I made your inicial input part of main(), so if you want to use this program from another one, it doesn't do anything, but you still get to use the dice_roll() function.







      share|improve this answer












      share|improve this answer



      share|improve this answer










      answered Aug 7 '17 at 2:05









      José Garcia

      1211




      1211












      • Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
        – thesolidmoose
        Aug 7 '17 at 2:31










      • Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
        – thesolidmoose
        Aug 7 '17 at 2:32






      • 1




        @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
        – bitcell
        Aug 7 '17 at 7:07












      • I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
        – Aziuth
        Aug 7 '17 at 15:33


















      • Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
        – thesolidmoose
        Aug 7 '17 at 2:31










      • Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
        – thesolidmoose
        Aug 7 '17 at 2:32






      • 1




        @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
        – bitcell
        Aug 7 '17 at 7:07












      • I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
        – Aziuth
        Aug 7 '17 at 15:33
















      Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
      – thesolidmoose
      Aug 7 '17 at 2:31




      Okay! So everything that you mentioned makes sense to me now, except the second While loop. I completely understand why its in there, however I don't know why it is: while play_again != "yes"
      – thesolidmoose
      Aug 7 '17 at 2:31












      Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
      – thesolidmoose
      Aug 7 '17 at 2:32




      Why is it that you made it "Not equal" to yes? That is where I am lost. Thank you!!!
      – thesolidmoose
      Aug 7 '17 at 2:32




      1




      1




      @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
      – bitcell
      Aug 7 '17 at 7:07






      @thesolidmoose Because if you would input 'yes', would just simply skip the whole 2nd while and print again your number. If it's not 'yes' ('no' or some gibberish), it would enter the second while, then it would check if it was 'no' to end the game, or gibberish to ask you to play again.
      – bitcell
      Aug 7 '17 at 7:07














      I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
      – Aziuth
      Aug 7 '17 at 15:33




      I'd rename dice_roll. The name implies that is does exactly that. Wouldn't expect it to do anything related to IO. How about dice_game? Also, right now there is not much code. But if he extends this by something, like rolling several dice and then rerolling some of them to create some patterns et cetera, the code will increase and should be split in the code that maintains the while loop and the code that governs a single turn. Since this is most likely what he will continue to do, I'd separate it already, even if this will result in more code right now.
      – Aziuth
      Aug 7 '17 at 15:33













      1














      Perhaps you could put it all in one loop. Maybe roll it all into the function or put the function code where the 'while' loop is.



      Something like: if yes, then print("Your number is: " + str(random.randint(1,6)))



      Also, you might not need a "no" option at all. It could just have what you wrote for "yes" and have anything else be "game over". But I see that maybe the "input not recognized" is a part of your task.






      share|improve this answer


























        1














        Perhaps you could put it all in one loop. Maybe roll it all into the function or put the function code where the 'while' loop is.



        Something like: if yes, then print("Your number is: " + str(random.randint(1,6)))



        Also, you might not need a "no" option at all. It could just have what you wrote for "yes" and have anything else be "game over". But I see that maybe the "input not recognized" is a part of your task.






        share|improve this answer
























          1












          1








          1






          Perhaps you could put it all in one loop. Maybe roll it all into the function or put the function code where the 'while' loop is.



          Something like: if yes, then print("Your number is: " + str(random.randint(1,6)))



          Also, you might not need a "no" option at all. It could just have what you wrote for "yes" and have anything else be "game over". But I see that maybe the "input not recognized" is a part of your task.






          share|improve this answer












          Perhaps you could put it all in one loop. Maybe roll it all into the function or put the function code where the 'while' loop is.



          Something like: if yes, then print("Your number is: " + str(random.randint(1,6)))



          Also, you might not need a "no" option at all. It could just have what you wrote for "yes" and have anything else be "game over". But I see that maybe the "input not recognized" is a part of your task.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Aug 7 '17 at 1:36









          Michael Angel

          115




          115























              1














              Merge game_start and play_again into one variable - note they already mean almost the same thing, and you never need both at the same time. So call it play or wants_to_play or keep_playing etc.



              That will allow you to collapse some of your repeated if statements and loops.



              Note also that dice_roll doesn't just roll the dice - it also asks if you want to play again. Don't do that - a function should just do one thing, not two. Maybe dice_roll should just do print("Your number is: " + str(random.randint(1,6))), or, in fact, maybe it should just return random.randint(1,6) and let other code worry about display - imagine if you wanted to make a GUI - try to keep the UI code from spreading everywhere.



              so think how the game should work (this is not python):



              wants_to_play = ask "do you want to play"
              while wants_to_play
              roll dice, display roll
              wants_to_play = ask "play again"


              That should be all there is basically, right?
              Can you fill it in from there? Turn that into Python?



              P.S. maybe ask could be a function, that handles the bad input etc, and converts the answer to true/false.






              share|improve this answer


























                1














                Merge game_start and play_again into one variable - note they already mean almost the same thing, and you never need both at the same time. So call it play or wants_to_play or keep_playing etc.



                That will allow you to collapse some of your repeated if statements and loops.



                Note also that dice_roll doesn't just roll the dice - it also asks if you want to play again. Don't do that - a function should just do one thing, not two. Maybe dice_roll should just do print("Your number is: " + str(random.randint(1,6))), or, in fact, maybe it should just return random.randint(1,6) and let other code worry about display - imagine if you wanted to make a GUI - try to keep the UI code from spreading everywhere.



                so think how the game should work (this is not python):



                wants_to_play = ask "do you want to play"
                while wants_to_play
                roll dice, display roll
                wants_to_play = ask "play again"


                That should be all there is basically, right?
                Can you fill it in from there? Turn that into Python?



                P.S. maybe ask could be a function, that handles the bad input etc, and converts the answer to true/false.






                share|improve this answer
























                  1












                  1








                  1






                  Merge game_start and play_again into one variable - note they already mean almost the same thing, and you never need both at the same time. So call it play or wants_to_play or keep_playing etc.



                  That will allow you to collapse some of your repeated if statements and loops.



                  Note also that dice_roll doesn't just roll the dice - it also asks if you want to play again. Don't do that - a function should just do one thing, not two. Maybe dice_roll should just do print("Your number is: " + str(random.randint(1,6))), or, in fact, maybe it should just return random.randint(1,6) and let other code worry about display - imagine if you wanted to make a GUI - try to keep the UI code from spreading everywhere.



                  so think how the game should work (this is not python):



                  wants_to_play = ask "do you want to play"
                  while wants_to_play
                  roll dice, display roll
                  wants_to_play = ask "play again"


                  That should be all there is basically, right?
                  Can you fill it in from there? Turn that into Python?



                  P.S. maybe ask could be a function, that handles the bad input etc, and converts the answer to true/false.






                  share|improve this answer












                  Merge game_start and play_again into one variable - note they already mean almost the same thing, and you never need both at the same time. So call it play or wants_to_play or keep_playing etc.



                  That will allow you to collapse some of your repeated if statements and loops.



                  Note also that dice_roll doesn't just roll the dice - it also asks if you want to play again. Don't do that - a function should just do one thing, not two. Maybe dice_roll should just do print("Your number is: " + str(random.randint(1,6))), or, in fact, maybe it should just return random.randint(1,6) and let other code worry about display - imagine if you wanted to make a GUI - try to keep the UI code from spreading everywhere.



                  so think how the game should work (this is not python):



                  wants_to_play = ask "do you want to play"
                  while wants_to_play
                  roll dice, display roll
                  wants_to_play = ask "play again"


                  That should be all there is basically, right?
                  Can you fill it in from there? Turn that into Python?



                  P.S. maybe ask could be a function, that handles the bad input etc, and converts the answer to true/false.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Aug 7 '17 at 4:44









                  tony

                  1112




                  1112

















                      protected by Simon Forsberg Oct 11 at 14:02



                      Thank you for your interest in this question.
                      Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).



                      Would you like to answer one of these unanswered questions instead?



                      Popular posts from this blog

                      Сан-Квентин

                      Алькесар

                      Josef Freinademetz