Asking the user if they want to play again [duplic

2019-06-14 20:53发布

问题:

This question already has an answer here:

  • Ask the user if they want to repeat the same task again 2 answers

Basically it's a guessing game and I have literally all the code except for the last part where it asks if the user wants to play again. how do I code that, I use a while loop correct?

heres my code:

import random
number=random.randint(1,1000)
count=1
guess= eval(input("Enter your guess between 1 and 1000 "))

while guess !=number:
count+=1

 if guess > number + 10:
  print("Too high!")
 elif guess < number - 10:
  print("Too low!")
 elif guess > number:
  print("Getting warm but still high!")
 elif guess < number:
  print("Getting warm but still Low!")

 guess = eval(input("Try again "))
print("You rock! You guessed the number in" , count , "tries!")

while guess == number:
 count=1
 again=str(input("Do you want to play again, type yes or no "))
if again == yes:

guess= eval(input("Enter your guess between 1 and 1000 "))

if again == no:
break

回答1:

One big while loop around the whole program

import random

play = True

while play:
  number=random.randint(1,1000)
  count=1
  guess= eval(input("Enter your guess between 1 and 1000 "))

    while guess !=number:
      count+=1

      if guess > number + 10:
        print("Too high!")
      elif guess < number - 10:
        print("Too low!")
      elif guess > number:
        print("Getting warm but still high!")
      elif guess < number:
        print("Getting warm but still Low!")

      guess = eval(input("Try again "))
    print("You rock! You guessed the number in" , count , "tries!")

    count=1
    again=str(input("Do you want to play again, type yes or no "))
    if again == "no":
      play = False


回答2:

separate your logic into functions

def get_integer_input(prompt="Guess A Number:"):
    while True:
       try: return int(input(prompt))
       except ValueError:
          print("Invalid Input... Try again")

for example to get your integer input and for your main game

import itertools
def GuessUntilCorrect(correct_value):
   for i in itertools.count(1):
       guess = get_integer_input()
       if guess == correct_value: return i
       getting_close = abs(guess-correct_value)<10
       if guess < correct_value:
          print ("Too Low" if not getting_close else "A Little Too Low... but getting close")
       else:
          print ("Too High" if not getting_close else "A little too high... but getting close")

then you can play like

tries = GuessUntilCorrect(27) 
print("It Took %d Tries For the right answer!"%tries)

you can put it in a loop to run forever

while True:
     tries = GuessUntilCorrect(27) #probably want to use a random number here
     print("It Took %d Tries For the right answer!"%tries)
     play_again = input("Play Again?").lower()
     if play_again[0] != "y":
        break


回答3:

Don't use eval (as @iCodex said) - it's risky, use int(x). A way to do this is to use functions:

import random
import sys

def guessNumber():
    number=random.randint(1,1000)
    count=1
    guess= int(input("Enter your guess between 1 and 1000: "))

    while guess !=number:
        count+=1
        if guess > (number + 10):
            print("Too high!")
        elif guess < (number - 10):
            print("Too low!")
        elif guess > number:
            print("Getting warm but still high!")
        elif guess < number:
            print("Getting warm but still Low!")

        guess = int(input("Try again "))

    if guess == number:
        print("You rock! You guessed the number in ", count, " tries!")
        return

guessNumber()

again = str(input("Do you want to play again (type yes or no): "))
if again == "yes":
    guessNumber()
else:
    sys.exit(0)

Using functions mean that you can reuse the same piece of code as many times as you want.

Here, you put the code for the guessing part in a function called guessNumber(), call the function, and at the end, ask the user to go again, if they want to, they go to the function again.



回答4:

I want to modify this program so that it can ask the user whether or not they want to input another number and if they answer 'no' the program terminates and vice versa. This is my code:

step=int(input('enter skip factor: '))
num = int(input('Enter a number: '))

while True:
  for i in range(0,num,step):    

    if (i % 2) == 0: 
       print( i, ' is Even')
    else:
       print(i, ' is Odd')
again = str(input('do you want to use another number? type yes or no')
        if again = 'no' :     
            break