与计算器一样使用input()函数是否安全?

时间:2018-10-18 15:13:49

标签: python python-2.7

嗨,我是编程新手,我一直在从事计算器程序的研究。还没有完成,但是今天我的问题是,像我一样使用input()函数是否危险?我已经做了很多研究,我可以找到在哪里说不要在python 2中使用输入函数,因为这很危险,并且要使用raw_input,但是该模块无法满足我的需要。有没有更安全的方法来做到这一点。这是我的计算器代码(非常基本和简单)

while True: 
  print '\nWhat do you want to multiply/divide/add/subtract ?', 
  calc = input(" ---> " )
  print '\nThe answer is %s\n' %(calc)

我还能添加一些代码,如果输入了除乘法,加法,除法或减法问题以外的任何内容,它将说出无效的输入,并继续类似于该代码如何工作(如果不是'y)输入'或'n'?就像下面的这段代码。(很抱歉,我无法在标题中添加此代码,因为它已经很长了。

while True:
    y = 'y'
    n = 'n'

    answer = raw_input('Run again? (y/n): ')
    if answer in ('y', 'n'):
        break
    print 'Invalid input.'

if answer == y:
    continue
else:
    print 'Goodbye'
    break       

非常抱歉,如果这样做很多,我已经尝试进行研究,并且几乎想出了如何添加无效输入的方法,我还需要一种方法,只需键入quit就可以退出程序。 〜iMexa

2 个答案:

答案 0 :(得分:1)

在Python 2.x中,IllegalArgumentException返回一个字符串,而FirebaseVisionImageMetadata在上下文中评估输入。 raw_input()等同于input()input()无法捕获用户错误。如果输入无效,则与eval(raw_input(prompt))函数不同,它只会引发一个input()

答案 1 :(得分:0)

Python2 input()评估其内容,而raw_input()将其作为字符串返回。

# Python 2
input()
>>> 2+2
4

raw_input()
>>> 2+2
"2+2"

如果使用不正确,input()不仅会引发错误,而且还可以使程序的用户执行意外的操作,其中某些操作很危险。