鱼C论坛

 找回密码
 立即注册
查看: 2068|回复: 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.大神们,尽量用简单的语言!!!太复杂的看不懂

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 [player1, player2]:
            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
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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之间的随机数字。如果玩家在三次猜测中没有猜中数字,程序会告诉他们数字是奇数还是偶数,并提示他们的猜测偏大还是偏小。如果在六次猜测中没有任何一个玩家猜对,程序会结束游戏并显示哪个数字是正确的。如果一个玩家猜对了,程序会增加他们的得分并结束游戏。最后,程序会显示哪个玩家赢得了游戏,或者如果有平局的话,程序会显示平局。
想知道小甲鱼最近在做啥?请访问 -> 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.允许玩家中途放弃游戏

代码如下:
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("游戏结束,没有玩家猜对目标数字。")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!
但是我想让前四次猜测后(就是一人两次)出现hint提示,而且就是不管前面有没有人放弃。
比如说前面四次猜测,有人放弃了两次,只猜了两个数字,但是仍然想出现hint。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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("游戏结束,没有玩家猜对目标数字。")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 03:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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