Asking the user if they want to play again [duplic

2019-06-14 20:07发布

This question already has an answer here:

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

4条回答
够拽才男人
2楼-- · 2019-06-14 20:40

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
查看更多
Evening l夕情丶
3楼-- · 2019-06-14 20:52

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 
查看更多
祖国的老花朵
4楼-- · 2019-06-14 21:06

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
查看更多
一纸荒年 Trace。
5楼-- · 2019-06-14 21:07

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.

查看更多
登录 后发表回答