题目
你要根据线索猜出一个三位数。游戏会根据你的猜测给出以下提示之一:如果你猜对一位数字但数字位置不对,则会提示“Pico”;如果你同时猜对了一位数字及其位置,则会提示“Fermi”;如果你猜测的数字及其位置都不对,则会提示“Bagels”。你有10次猜数字机会
花十分钟,来实现一下吧! 输出结果如下:
请勿偷看答案哟!
为了用Python实现这个猜数字游戏,我们可以遵循以下步骤:
- 随机生成一个三位数(例如100到999之间)。
- 允许用户进行最多10次猜测。
- 根据用户的猜测,使用“Pico”,“Fermi”,“Bagels”作为反馈。
- 如果用户在10次以内猜中数字,则宣布胜利。
下面是实现这个游戏的Python代码:
import randomdef guess_number_game():target_number = random.randint(100, 999) # 生成目标数字guesses_left = 10 # 初始化猜测次数guess = Noneprint("欢迎来到猜数字游戏!")print("我已经想好了一个100到999之间的数字。")print("你有10次机会来猜这个数字。")while guesses_left > 0:guess = input("请输入你的猜测(三位数): ").strip()# 检查输入是否有效if not guess.isdigit() or len(guess) != 3 or int(guess) < 100 or int(guess) > 999:print("无效的输入,请输入一个有效的三位数。")continueguess = int(guess)pico = 0 # 猜对数字但位置不对的数量fermi = 0 # 猜对数字且位置对的数量for i in range(3):if guess // 10**(2-i) % 10 == target_number // 10**(2-i) % 10:if i == target_number.count(guess // 10**(2-i) % 10):fermi += 1else:pico += 1if fermi == 3:print("恭喜你!猜对了!")breakelif pico > 0:print("Pico")elif fermi > 0:print("Fermi")else:print("Bagels")guesses_left -= 1if guesses_left == 0:print(f"很遗憾,你的机会用完了。正确答案是:{target_number}")if __name__ == "__main__":guess_number_game()
注意:
- 代码中,我们使用了
//
运算符来进行整除,以及%
运算符来找到每一位上的数字。 count()
方法用于检查在目标数字中某个数字出现的次数,这有助于确定是否猜对了位置。- 如果用户输入的不是一个有效的三位数,程序会提示用户重新输入。
- 当用户猜对全部数字且位置也正确时,游戏结束并宣布用户胜利。如果用户在10次内未能猜中,则显示正确答案。