猜幸运数字程序问题求助:列表判断失效及任务d实现困难
猜幸运数字程序问题修复
问题1:无法正确检测猜对数字的修复
- 核心原因:
input()返回的是字符串类型,而player_lucky_list中存储的是整数类型,类型不匹配导致in判断永远失效。 - 修复方案:
- 尝试将用户输入转为整数,捕获转换异常以处理非数字输入情况。
- 使用转换后的整数与列表元素进行匹配判断。
问题2:任务d的实现
按需求完成以下逻辑:
- 当输入数字存在于
player_lucky_list但不等于lucky_number时,生成该数字±10的两个数存入input_diff列表。 - 检查
lucky_number是否在input_diff中,若不在则追加进去。 - 输出提示信息,根据用户输入的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
相关产品推荐
相关产品推荐

