鱼C论坛

 找回密码
 立即注册
查看: 2589|回复: 5

python 初级练习

[复制链接]
发表于 2023-10-10 02:06:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-10 02:07:03 | 显示全部楼层
以下是一个满足您要求的Python初级练习示例:

  1. import random

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

  11.     while chances > 0:
  12.         for player in [player1, player2]:
  13.             print(f"{player}的回合:")
  14.             for _ in range(3):
  15.                 guess = int(input("请输入1到12之间的数字:"))
  16.                 if guess == target:
  17.                     if player == player1:
  18.                         player1_correct += 1
  19.                     else:
  20.                         player2_correct += 1
  21.                     print(f"恭喜{player}猜对了!")
  22.                     break
  23.                 elif guess < target:
  24.                     print("猜小了!")
  25.                 else:
  26.                     print("猜大了!")
  27.                 guessed_numbers.append(guess)
  28.             chances -= 1
  29.             if chances == 0 or (player1_correct > 0 and player2_correct > 0):
  30.                 break
  31.             if not hints_given and chances == 2:
  32.                 hints_given = True
  33.                 if target % 2 == 0:
  34.                     print("提示:目标数字是偶数。")
  35.                 else:
  36.                     print("提示:目标数字是奇数。")
  37.             print(f"已经猜过的数字:{guessed_numbers}")

  38.     if player1_correct > player2_correct:
  39.         print(f"恭喜{player1}获胜!")
  40.     elif player2_correct > player1_correct:
  41.         print(f"恭喜{player2}获胜!")
  42.     else:
  43.         print("平局!")

  44. if __name__ == "__main__":
  45.     main()
复制代码


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

使用道具 举报

发表于 2023-10-10 02:07:13 | 显示全部楼层
以下是Python的代码实现,实现了上述所有要求:

  1. import random

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

  4. score1 = 0
  5. score2 = 0

  6. guessed_numbers = []

  7. def guess_number(player):
  8.     print(player + "请猜一个数字(1到12之间):")
  9.     for i in range(3):
  10.         guess = int(input("你的猜测是:"))
  11.         if guess in guessed_numbers:
  12.             print("这个数字已经被猜过了,请重新猜测!")
  13.             continue
  14.         guessed_numbers.append(guess)
  15.         if guess == number:
  16.             print(player + "猜对了!")
  17.             return True
  18.         elif guess % 2 == 0:
  19.             print("这个数字是偶数!")
  20.         else:
  21.             print("这个数字是奇数!")
  22.         if guess > number:
  23.             print("你的猜测偏大了!")
  24.         else:
  25.             print("你的猜测偏小了!")
  26.     return False

  27. for i in range(6):
  28.     if i % 2 == 0:
  29.         print(player1 + "请开始猜测!")
  30.         if guess_number(player1):
  31.             score1 += 1
  32.             break
  33.     else:
  34.         print(player2 + "请开始猜测!")
  35.         if guess_number(player2):
  36.             score2 += 1
  37.             break

  38. if score1 > score2:
  39.     print(player1 + "获胜!")
  40. elif score2 > score1:
  41.     print(player2 + "获胜!")
  42. else:
  43.     print("平局!")

  44. print("游戏结束!")
复制代码


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

使用道具 举报

发表于 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.允许玩家中途放弃游戏

代码如下:
  1. import random

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

  5. # 初始化玩家猜测次数和答对状态
  6. player1_attempts = 0
  7. player2_attempts = 0
  8. player1_correct = False
  9. player2_correct = False

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

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

  14. # 初始化游戏
  15. game_continue = True

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

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

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

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

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

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

  55. # 游戏结束时的消息
  56. if player1_correct:
  57.     print(f"恭喜{player1},你猜对了!目标数字是{target_number}。")
  58. elif player2_correct:
  59.     print(f"恭喜{player2},你猜对了!目标数字是{target_number}。")
  60. else:
  61.     print("游戏结束,没有玩家猜对目标数字。")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!
但是我想让前四次猜测后(就是一人两次)出现hint提示,而且就是不管前面有没有人放弃。
比如说前面四次猜测,有人放弃了两次,只猜了两个数字,但是仍然想出现hint。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那就修改一下pass结束
  1. import random

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

  5. # 初始化玩家猜测次数和答对状态
  6. player1_attempts = 0
  7. player2_attempts = 0
  8. player1_correct = False
  9. player2_correct = False

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

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

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

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

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

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

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

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


  53.     if player1_attempts >= 3 and player2_attempts >= 3:
  54.         game_continue = False

  55. # 游戏结束时的消息
  56. if player1_correct:
  57.     print(f"恭喜{player1},你猜对了!目标数字是{target_number}。")
  58. elif player2_correct:
  59.     print(f"恭喜{player2},你猜对了!目标数字是{target_number}。")
  60. else:
  61.     print("游戏结束,没有玩家猜对目标数字。")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表