You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

猜幸运数字程序问题求助:列表判断失效及任务d实现困难

猜幸运数字程序问题修复

问题1:无法正确检测猜对数字的修复

  • 核心原因:input()返回的是字符串类型,而player_lucky_list中存储的是整数类型,类型不匹配导致in判断永远失效。
  • 修复方案:
    1. 尝试将用户输入转为整数,捕获转换异常以处理非数字输入情况。
    2. 使用转换后的整数与列表元素进行匹配判断。

问题2:任务d的实现

按需求完成以下逻辑:

  1. 当输入数字存在于player_lucky_list但不等于lucky_number时,生成该数字±10的两个数存入input_diff列表。
  2. 检查lucky_number是否在input_diff中,若不在则追加进去。
  3. 输出提示信息,根据用户输入的Y/N控制游戏是否继续。

修正后的完整代码

from datetime import datetime, date
import random


def age(born):
    today = date.today()
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))


player_fname = input("Name: ")
player_age = int(input("Age: "))

running = True
while running:
    player_birthday = datetime.strptime(input("Birthday (format yyyymmdd): "), "%Y%m%d")
    age_player = int(age(player_birthday))
    if age_player == player_age:
        print("Wow your age is right, let’s continue!")
        running = False
    else:
        print("Aha, we are in 2022 and your age is not right, kindly enter it again?")

lucky_number = random.randint(1, 200)
tries_count = 0

player_lucky_list = []
n = 10
for i in range(n):
    player_lucky_list.append(random.randint(0, 200))

player_lucky_guess = []
guessing = True
while guessing:
    message = "Hi {}, this is your try # {}".format(player_fname, tries_count)
    print(message)
    player_guess_input = input("Please enter number from {}: ".format(player_lucky_list))
    
    # 处理输入转换,捕获非数字情况
    try:
        player_guess = int(player_guess_input)
    except ValueError:
        print("Sorry, wrong value, Enter a INTEGER NUMBER!!!!")
        tries_count += 1
        player_lucky_guess.append(player_guess_input)
        print(player_lucky_guess)
        continue
    
    player_lucky_guess.append(player_guess)
    print(player_lucky_guess)
    
    if player_guess in player_lucky_list:
        if player_guess == lucky_number:
            print("Congratulations, your lucky number is {} you got it from try # {}".format(player_guess, tries_count))
            guessing = False  # 猜对幸运数字,结束游戏
        else:
            # 实现任务d的逻辑
            input_diff = [player_guess - 10, player_guess + 10]
            if lucky_number not in input_diff:
                input_diff.append(lucky_number)
            # 输出提示并询问是否继续
            prompt_msg = f"your number is 10 points more or less from these numbers : {input_diff}, do you like to try again? (type 'Y' = yes, 'N' = no)"
            user_choice = input(prompt_msg).strip().upper()
            if user_choice == 'N':
                guessing = False
    else:
        print("Try again")
    
    tries_count += 1

内容的提问来源于stack exchange,提问作者Gino Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:30:41