繁体   English   中英

打印功能不打印结果

[英]Print function not printing results

我正在尝试为一个简单的游戏编写代码。 从一个基地开始,但我面临着非常烦人的错误(而不是小故障)。

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}
 """)
x = input()
print(x)

if winning_number != x:
    print('Sorry, no points for you')
else:
    print('You got 10 points!')

我正在谈论的故障:当用户将数字输入到字符串 'x' 时,下一行的写法几乎相同。 例如:如果用户输入 6+5,print 会打印出 6+5 而不是 11。有什么提示吗?

当用户输入x您会得到一个字符串,并且不会对其进行评估。 如果你想评估他们写的表达式,你可以这样做

x = eval(input())

在这种情况下, x将是一个整数。

如果您只想将输入的字符串解析为整数,(不支持 + 或 - 或其他),您可以这样做

x = int(input())

编辑:

eval有潜在危险,在这种情况下实际上可以让用户作弊。 如果用户winning_number ,则将选择中奖号码。

相反,您可以使用literal_eval来避免这种情况。

import ast
x = ast.literal_eval(input())

这限制了用户使用程序其余部分中定义的变量,以及运行任何代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM