【问题标题】:Random sum - python随机和 - python
【发布时间】:2015-05-03 04:18:06
【问题描述】:

我怎样才能让这实际上给我一个答案?我希望它输出一个总和,例如“ 17-5=12 ”

    import random
    no1 =(random.randint(1,20))
    function =(random.choice("+-*"))
    no2 =(random.randint(1,20))
    answer =no2,function,no1
    print(answer)

【问题讨论】:

  • ast.literal_eval 可能对您有用。 (但仅适用于 3.X)
  • 谢谢,但是我该如何使用呢?
  • 文档应该在那里提供一些指导:-)
  • 好的,那我在哪里使用呢? :-) 对不起,我真的不太擅长这个
  • @Kevin 不是非常有用,因为它只会评估数字(您可以使用int)而不是运算符。

标签: python python-3.x random numbers


【解决方案1】:

首先知道有函数可以帮助执行操作

import operator
operator.add(5,7) # 12
operator.sub(5,7) # -2
operator.mul(5,7) # 35

您应该创建运算符到函数的映射

import operator

my_functions = {"+":operator.add,"-":operator.sub,"*":operator.mul}

然后您可以轻松选择运算符和函数

my_operator,my_function = random.choice(my_functions.items())

那么您需要做的就是将其应用于您的数字(粗略的数字必须首先是数字)

number1 = 12
number2 = 5

print("%s %s %s = %s"%(number1,my_operator,number2,my_function(number1,number2)))

【讨论】:

  • 不 .... 一点也不 ... eval 是一个肮脏的黑客 ... 至少恕我直言(但你的权利,它解决了 op 的问题)(但我的确实有错字print)
【解决方案2】:

像这样:

import random
no1 =(random.randint(1,20))
function =(random.choice("+-*"))
no2 =(random.randint(1,20))
answer =str(no1) + function + str(no2)
print(str(no1) + function + str(no2) + '=' + str(eval(answer)))

【讨论】:

  • 我是在 2.x 中写的,它应该也适用于 3.x
  • 我有一个问题...我想...我知道我会使用eval 现在我有两个问题
  • 强制性免责声明:eval 不应用于用户能够操作的任何字符串,因为它们可以提供像 "__import__('os').system('delete_hard_drive.exe')" 这样的输入并破坏您的计算机。但是,这个特定的练习似乎没有危险,因为用户无法提供自己的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2019-09-19
  • 1970-01-01
  • 2020-04-21
  • 2016-12-29
  • 1970-01-01
相关资源
最近更新 更多