Python数字小游戏中Print函数不输出输入表达式计算结果的问题
问题根源
input()函数默认返回字符串类型,用户输入的算术表达式会被识别为普通文本,不会自动执行计算- 随机生成的获胜数字是整数类型,字符串与整数直接做等值判断永远返回
False,因此得分逻辑永远无法触发
修复方案
你可以通过算术表达式解析+异常捕获的逻辑解决问题,修复后的代码如下:
import random winning_number = random.randint(1, 1000) allowed_numbers_single_digit = random.randint(1, 10) allowed_numbers_single_digit2 = random.randint(1, 10) allowed_numbers_single_digit3 = random.randint(1, 10) allowed_numbers_single_digit4 = random.randint(1, 10) middle_column_numbers = (10, 15, 20, 25) right_column_numbers = (50, 75, 100) double_digit_allowed = random.choice(middle_column_numbers) double_high_digits = random.choice(right_column_numbers) print(f"""Number that we are looking for is {winning_number}. You may use {allowed_numbers_single_digit, allowed_numbers_single_digit2, allowed_numbers_single_digit3, allowed_numbers_single_digit4, double_digit_allowed, double_high_digits} """) input_content = input() try: # 解析并计算输入的算术表达式,转换为整数 calculated_result = int(eval(input_content)) print(calculated_result) if winning_number == calculated_result: print('You got 10 points!') else: print('Sorry, no points for you') except (SyntaxError, NameError, TypeError, ValueError): print('Invalid expression, please input valid arithmetic formula')
安全提示
- 上述方案中使用的
eval函数会执行任意输入的代码,仅适合个人/可信环境使用 - 若需对外发布游戏,建议替换为专用的安全算术表达式解析工具,或自行实现仅支持数字和四则运算的解析逻辑
内容的提问来源于stack exchange,提问作者Mime
相关产品推荐
相关产品推荐

