当我运行以下代码时:
import math
x=float(input('enter : '))
print(x)
然后我输入:math.sin或cos或pi或log ....的数字是:sin(2),我得到这个错误:
Traceback (most recent call last):
File "C:\Users\user\Desktop\hh.py", line 10, in <module>
x=float(input('enter : '))
ValueError: could not convert string to float: 'sin(x)'
答案 0 :(得分:0)
您可以通过组合@Walter Tross和@wwii的评论来获得答案。如果希望用户能够输入将使用存储在x
中的结果进行评估的代码,如何解决此问题,应使用:
from ast import literal_eval
x = literal_eval(input('enter:'))
P.S。您将需要在用户输入周围加上引号。 P.P.S.您的用户基本上可以使用此输入来输入要执行的任何代码。
要了解原因,您正在提供python命令,并希望它评估您所说的内容并将其存储在x
中。您是在给python单词,而不是将其转换为数字的方法。就像在终端机2 plus 2
中输入一样。除非您拥有某种编译器,否则这些词没有任何意义。
答案 1 :(得分:0)
您很难编写一个程序来理解和评估表达式,尤其是那些包含诸如sin
或sqrt
之类的函数的表达式。但是,如果您确定程序的用户是安全的(通常是一个错误的假设),则可以使Python使用内置的eval
函数进行评估。您可以尝试以下方法:
import math
strexpr = input('enter: ')
print(eval(strexpr))
然后,如果您运行此程序并且用户键入math.sin(2)
,则将打印该程序
0.9092974268256817
这是两个弧度的正弦值。
注意::这个小程序将允许用户键入 any 有效的Python表达式,然后对其求值。如果用户知道如何使用,则可以使用它来格式化硬盘驱动器并清除所有数据或进行各种恶作剧。仅在完全确定用户的情况下才使用此功能。但是您怎么能确定其他人呢?