python 初级练习
要求:1.想让两个人轮流玩猜数字游戏
2.轮到他们的时候叫他们的名字
3.数字是1 到12 中的随机数字
4.4次下来还没有人猜对时给出提示数字是奇数还是偶数
5.每次猜测都告诉他们偏大还是偏小了
6.当他们每个人各三次的机会,也就是一共6次的机会用完了或者其中一个人答对了游戏结束
6.每次猜测都告诉他们偏大还是偏小了
7.每个人猜测一次的时候可以猜三次数字,每个数字告诉大了还是小了
8.给猜对次数最多的人额外的祝贺
9.不能用break,只能for loop 和while loop
10.允许玩家中途放弃游戏
11.(选择性):找到一个方法告诉玩家哪个数字已经被猜过了,所以他们不需要再猜第二遍
12.大神们,尽量用简单的语言!!!太复杂的看不懂 以下是一个满足您要求的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
如果问题已经解决,请设置最佳答案 以下是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: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("游戏结束,没有玩家猜对目标数字。")
wk012233 发表于 2023-10-12 11:13
你的需求有点问题吧,我这个按:
1.想让两个人轮流玩猜数字游戏
2.轮到他们的时候叫他们的名字
谢谢!
但是我想让前四次猜测后(就是一人两次)出现hint提示,而且就是不管前面有没有人放弃。
比如说前面四次猜测,有人放弃了两次,只猜了两个数字,但是仍然想出现hint。 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]