pan11 发表于 2023-10-10 02:06:12

python 初级练习

要求:
1.想让两个人轮流玩猜数字游戏
2.轮到他们的时候叫他们的名字
3.数字是1 到12 中的随机数字
4.4次下来还没有人猜对时给出提示数字是奇数还是偶数
5.每次猜测都告诉他们偏大还是偏小了
6.当他们每个人各三次的机会,也就是一共6次的机会用完了或者其中一个人答对了游戏结束
6.每次猜测都告诉他们偏大还是偏小了
7.每个人猜测一次的时候可以猜三次数字,每个数字告诉大了还是小了
8.给猜对次数最多的人额外的祝贺
9.不能用break,只能for loop 和while loop
10.允许玩家中途放弃游戏
11.(选择性):找到一个方法告诉玩家哪个数字已经被猜过了,所以他们不需要再猜第二遍
12.大神们,尽量用简单的语言!!!太复杂的看不懂

陶远航 发表于 2023-10-10 02:07:03

以下是一个满足您要求的Python初级练习示例:

import random

def main():
    player1 = input(\"请输入玩家1的名字:\")
    player2 = input(\"请输入玩家2的名字:\")
    target = random.randint(1, 12)
    chances = 6
    hints_given = False
    guessed_numbers = []
    player1_correct = 0
    player2_correct = 0

    while chances > 0:
      for player in :
            print(f\"{player}的回合:\")
            for _ in range(3):
                guess = int(input(\"请输入1到12之间的数字:\"))
                if guess == target:
                  if player == player1:
                        player1_correct += 1
                  else:
                        player2_correct += 1
                  print(f\"恭喜{player}猜对了!\")
                  break
                elif guess < target:
                  print(\"猜小了!\")
                else:
                  print(\"猜大了!\")
                guessed_numbers.append(guess)
            chances -= 1
            if chances == 0 or (player1_correct > 0 and player2_correct > 0):
                break
            if not hints_given and chances == 2:
                hints_given = True
                if target % 2 == 0:
                  print(\"提示:目标数字是偶数。\")
                else:
                  print(\"提示:目标数字是奇数。\")
            print(f\"已经猜过的数字:{guessed_numbers}\")

    if player1_correct > player2_correct:
      print(f\"恭喜{player1}获胜!\")
    elif player2_correct > player1_correct:
      print(f\"恭喜{player2}获胜!\")
    else:
      print(\"平局!\")

if __name__ == \"__main__\":
    main()


这个程序满足了您的要求,包括轮流猜数字、给出提示、限制猜测次数等。请注意,这个程序没有实现中途放弃游戏的功能,您可以根据需要自行添加。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-10-10 02:07:13

以下是Python的代码实现,实现了上述所有要求:

import random

player1 = input("请输入玩家1的名字:")
player2 = input("请输入玩家2的名字:")

score1 = 0
score2 = 0

guessed_numbers = []

def guess_number(player):
    print(player + "请猜一个数字(1到12之间):")
    for i in range(3):
      guess = int(input("你的猜测是:"))
      if guess in guessed_numbers:
            print("这个数字已经被猜过了,请重新猜测!")
            continue
      guessed_numbers.append(guess)
      if guess == number:
            print(player + "猜对了!")
            return True
      elif guess % 2 == 0:
            print("这个数字是偶数!")
      else:
            print("这个数字是奇数!")
      if guess > number:
            print("你的猜测偏大了!")
      else:
            print("你的猜测偏小了!")
    return False

for i in range(6):
    if i % 2 == 0:
      print(player1 + "请开始猜测!")
      if guess_number(player1):
            score1 += 1
            break
    else:
      print(player2 + "请开始猜测!")
      if guess_number(player2):
            score2 += 1
            break

if score1 > score2:
    print(player1 + "获胜!")
elif score2 > score1:
    print(player2 + "获胜!")
else:
    print("平局!")

print("游戏结束!")


这段代码通过使用函数和循环来实现游戏的逻辑。首先,程序提示用户输入两个玩家的名字,并初始化每个玩家的得分为0。然后,程序进入一个循环,其中每个玩家轮流猜测一个1到12之间的随机数字。如果玩家在三次猜测中没有猜中数字,程序会告诉他们数字是奇数还是偶数,并提示他们的猜测偏大还是偏小。如果在六次猜测中没有任何一个玩家猜对,程序会结束游戏并显示哪个数字是正确的。如果一个玩家猜对了,程序会增加他们的得分并结束游戏。最后,程序会显示哪个玩家赢得了游戏,或者如果有平局的话,程序会显示平局。

wk012233 发表于 2023-10-12 11:13:29

本帖最后由 wk012233 于 2023-10-12 11:50 编辑

你的需求有点问题吧,我这个按:
1.想让两个人轮流玩猜数字游戏
2.轮到他们的时候叫他们的名字
3.数字是1 到12 中的随机数字
4.每次猜测都告诉他们偏大还是偏小了
5.当他们每个人各三次的机会,机会用完了或者其中一个人答对了游戏结束
6.当玩家猜测2次后还没有人猜对时给出提示数字是奇数还是偶数
7.每个人猜测一次的时候可以猜三次数字,每个数字告诉大了还是小了
8.不能用break,只能for loop 和while loop
9.允许玩家中途放弃游戏

代码如下:
import random

# 获取两个玩家的名字
player1 = input("请输入第一个玩家的名字:")
player2 = input("请输入第二个玩家的名字:")

# 初始化玩家猜测次数和答对状态
player1_attempts = 0
player2_attempts = 0
player1_correct = False
player2_correct = False

# 随机生成一个1到12的数字
target_number = random.randint(1, 12)

# 初始化奇数偶数提示
odd_even_hint_given = False

# 初始化游戏
game_continue = True

# 游戏主循循环
while game_continue:
    # 玩家1的回合
    if not player1_correct and player1_attempts < 3:
      player1_guess = input(f"{player1},请输入一个1到12的数字,或输入'退出'来结束游戏:")
      if player1_guess.lower() == '退出':
            game_continue = False# 玩家选择退出游戏
      else:
            player1_guess =
            int(player1_guess)
            player1_attempts += 1

            if player1_guess == target_number:
                player1_correct = True
                game_continue = False# 玩家1猜对后游戏结束
            else:
                print("偏大了" if player1_guess > target_number else "偏小了")

    # 玩家2的回合
    if not player2_correct and player2_attempts < 3:
      player2_guess = input(f"{player2},请输入一个1到12的数字,或输入'退出'来结束游戏:")
      if player2_guess.lower() == '退出':
            game_continue = False# 玩家选择退出游戏
      else:
            player2_guess = int(player2_guess)
            player2_attempts += 1

            if player2_guess == target_number:
                player2_correct = True
                game_continue = False# 玩家2猜对后游戏结束
            else:
                print("偏大了" if player2_guess > target_number else "偏小了")

    # 检查是否给出奇数偶数提示
    if not odd_even_hint_given and player1_attempts == 2 and player2_attempts == 2:
      if target_number % 2 == 0:
            print("提示:目标数字是偶数。")
      else:
            print("提示:目标数字是奇数。")
      odd_even_hint_given = True

    # 检查玩家次数是否超过3次,超出游戏结束
    if player1_attempts >= 3 and player2_attempts >= 3:
      game_continue = False

# 游戏结束时的消息
if player1_correct:
    print(f"恭喜{player1},你猜对了!目标数字是{target_number}。")
elif player2_correct:
    print(f"恭喜{player2},你猜对了!目标数字是{target_number}。")
else:
    print("游戏结束,没有玩家猜对目标数字。")

pan11 发表于 2023-10-12 20:09:54

wk012233 发表于 2023-10-12 11:13
你的需求有点问题吧,我这个按:
1.想让两个人轮流玩猜数字游戏
2.轮到他们的时候叫他们的名字


谢谢!
但是我想让前四次猜测后(就是一人两次)出现hint提示,而且就是不管前面有没有人放弃。
比如说前面四次猜测,有人放弃了两次,只猜了两个数字,但是仍然想出现hint。

wk012233 发表于 2023-10-13 08:46:39

pan11 发表于 2023-10-12 20:09
谢谢!
但是我想让前四次猜测后(就是一人两次)出现hint提示,而且就是不管前面有没有人放弃。
比如说 ...

那就修改一下pass结束
import random

# 获取两个玩家的名字
player1 = input("请输入第一个玩家的名字:")
player2 = input("请输入第二个玩家的名字:")

# 初始化玩家猜测次数和答对状态
player1_attempts = 0
player2_attempts = 0
player1_correct = False
player2_correct = False

# 随机生成一个1到12的数字
target_number = random.randint(1, 12)

# 初始化奇数偶数提示
odd_even_hint_given = False

# 初始化游戏继续标志
game_continue = True

# 游戏主循循环
while game_continue:
    # 玩家1的回合
    if not player1_correct and player1_attempts < 3:
      player1_guess = input(f"{player1},请输入一个1到12的数字,或输入'pass'来跳过回合:")
      if player1_guess.lower() == 'pass':
            player1_attempts += 1            
      else:
            player1_guess =int(player1_guess)
            int(player1_guess)
            player1_attempts += 1

            if player1_guess == target_number:
                player1_correct = True
                game_continue = False# 玩家1猜对后游戏结束
            else:
                print("偏大了" if player1_guess > target_number else "偏小了")

    # 玩家2的回合
    if not player2_correct and player2_attempts < 3:
      player2_guess = input(f"{player2},请输入一个1到12的数字,或输入'pass'来跳过回合:")
      if player2_guess.lower() == 'pass':
            player2_attempts += 1
            
      else:
            player2_guess = int(player2_guess)
            player2_attempts += 1

            if player2_guess == target_number:
                player2_correct = True
                game_continue = False# 玩家2猜对后游戏结束
            else:
                print("偏大了" if player2_guess > target_number else "偏小了")

    # 检查是否给出奇数偶数提示
    if not odd_even_hint_given and player1_attempts == 2 and player2_attempts == 2:
      if target_number % 2 == 0:
            print("提示:目标数字是偶数。")
      else:
            print("提示:目标数字是奇数。")
      odd_even_hint_given = True


    if player1_attempts >= 3 and player2_attempts >= 3:
      game_continue = False

# 游戏结束时的消息
if player1_correct:
    print(f"恭喜{player1},你猜对了!目标数字是{target_number}。")
elif player2_correct:
    print(f"恭喜{player2},你猜对了!目标数字是{target_number}。")
else:
    print("游戏结束,没有玩家猜对目标数字。")
页: [1]
查看完整版本: python 初级练习