0

我必须为猜谜游戏编写代码,我不能使用循环。我必须让计算机在我已经完成的 1 到 32 之间选择一个随机数,用户必须进行猜测并尝试获取这个数字。在用户正确获得号码后,我如何编写一些停止游戏的代码?您只能尝试 5 次。这是我的代码:

import random

random.seed()

number = round((random.random()*32)+0.5)


def G():
    if guess > number:
        print("Lower...")
    else:
        print("Higher...")
        return False
  
def W():
    print("Correct!")
    print("You win!")
    return True


guess = int(input("Take a guess"))
if guess==number:
    W()
else:
    G()

guess = int(input("Try again"))
if guess==number:
    W()
else:
    G()

guess = int(input("Try again"))
if guess==number:
    W()
else:
    G()

guess = int(input("Try again"))
if guess==number:
    W()
else:
    G()

guess = int(input("Try again"))
if guess==number:
    W()
else:
    print("You lose!")
4

4 回答 4

1

您应该使用递归函数,这样您就可以将尝试次数定义为您不想重复行的任何值:

def findNumber(numToFind,nbTries):
    guess = int(input("Take a guess : "))

    if guess == numToFind:
        return True

    if guess > numToFind:
        print("Lower...")
    else:
        print("Higher...")

    if nbTries <= 1:
        return False

    return findNumber(numToFind,nbTries-1)

result = findNumber(number,5)
if result:
    print("Correct!")
    print("You win!")
else:
    print("You loose:")
于 2021-11-16T11:57:13.630 回答
0

我会写如下 - 当您开始复制和粘贴部分代码的活动时,有些事情是不对的:

def G(guess):
    if guess > number:
        print("Lower...")
    else:
        print("Higher...")
        return False

def W():
    print("Correct!")
    print("You win!")
    return True

def take_a_guess(guess, attempt_number = 1, max_attempts = 5):
    if guess == number:
        W()
        return
    else:
        G(guess)
    if attempt_number == max_attempts:
        print("You lost")
        return
    else:
        attempt_number += 1
        guess = int(input("Try again: "))   
        take_a_guess(guess, attempt_number, max_attempts) 



MAX_NUMBER_ATTEMPTS = 5

guess = int(input("Take a guess: "))
take_a_guess(guess, 1, MAX_NUMBER_ATTEMPTS)
于 2021-11-16T11:36:21.883 回答
0

您可以使用exit()来停止脚本执行。

您可以调用exit(0)以退出没有错误的脚本。

于 2021-11-16T11:24:52.940 回答
0

当他们说它不能使用循环时,这是否包括递归函数?

import random

random.seed() # redundant if you don't give it a seed value

number = random.randint(1,32) # This is the more appropriate function if you want integers

def make_guess(): # use descriptive function names
    guess = int(input("Take a guess"))
    if guess > number:
        print("Lower...")
    elif guess < number:
        print("Higher...")
    return guess 

def next_round(tries = 0):
    tries += 1
    guess = make_guess()
    if guess == number:
      print("Correct!\nYou win!")
      return
    elif tries >= 5:
      print("You lose!")
      return
    else:
      print("Try again")
      next_round(tries)
    
next_round()

如果用户输入非数字输入,我还会添加一些错误处理。您可以通过一条消息让他们使用数字来优雅地结束游戏,或者更好的是,让他们收到该消息并且游戏继续进行,而不会消耗他们的任何尝试。但我会把它留给你。

于 2021-11-16T11:53:04.653 回答