Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:脚本仅在终端中导入时运行。雨衣_Python_Macos_Eval_Textwrangler - Fatal编程技术网

Python:脚本仅在终端中导入时运行。雨衣

Python:脚本仅在终端中导入时运行。雨衣,python,macos,eval,textwrangler,Python,Macos,Eval,Textwrangler,由于某些原因,我的脚本拒绝直接从文本牧马人运行,但在导入到终端时运行良好 import math def main(): print("This program find the real solutions to a quadratic\n") a,b,c, = eval(input("Please enter the coefficients (a,b,c): ")) discRoot = math.sqrt(b * b -4 * a * c) root1

由于某些原因,我的脚本拒绝直接从文本牧马人运行,但在导入到终端时运行良好

import math

def main():
    print("This program find the real solutions to a quadratic\n")
    a,b,c, = eval(input("Please enter the coefficients (a,b,c): "))
    discRoot = math.sqrt(b * b -4 * a * c)
    root1 = (-b + discRoot) / (2 * a)
    root2 = (-b - discRoot) / (2 * a)
    print("\nThe solutions are:" , root1, root2)


main()
当我在textwrangler中运行它时,我得到错误消息TypeError:eval arg 1必须是字符串或代码对象。使用eval不意味着以下输入是整数而不是字符串吗?为什么会发生这种情况?

在Python2中,输入相当于Python3中的evalinput。我认为在终端中,您使用的是Python 3,但TextWrangler使用的是Python 2,因此TextWrangle正在执行EvalValinput,其计算结果为eval5,这会导致您看到的错误

要解决这个问题,您需要更新TextWrangler,或者在终端中使用Python 2。如果需要第二个选项,则应将evalinput替换为input

旁注:像这样使用eval是个坏主意,它很危险。您可能应该在Python 3中执行类似于a、b、c=mapint、input.split的操作。

在Python 2中,input相当于Python 3中的evalinput。我认为在终端中,您使用的是Python 3,但TextWrangler使用的是Python 2,因此TextWrangle正在执行EvalValinput,其计算结果为eval5,这会导致您看到的错误

要解决这个问题,您需要更新TextWrangler,或者在终端中使用Python 2。如果需要第二个选项,则应将evalinput替换为input

旁注:像这样使用eval是个坏主意,它很危险。您可能应该在Python 3中执行类似于a、b、c=mapint、input.split的操作。

问题不在于eval。问题在于input,它试图从标准输入流sys.stdin读取数据

如果你想绕过它,你应该把参数作为参数传递给eval,而不是使用输入。

问题不在于eval。问题在于input,它试图从标准输入流sys.stdin读取数据


如果你想避开它,你应该把这个参数作为参数传递给eval,而不是使用输入。

为什么要使用eval?我刚刚开始学习python,所以我遵循一本书的说明。你应该为python 2.7和3.4安装ipython。有很多很酷的扩展可以使用。为什么要使用eval?我刚刚开始学习python,所以我遵循一本书的说明。您应该为python 2.7和3.4安装ipython。你可以使用很多很酷的扩展。是的,我正在终端中使用3.4.1。我应该在我的脚本中添加一行Shebang来纠正这一点,还是有办法让TextWrangler与Python 3.4一起运行?我想有办法让TextWrangler与Python 3.4一起工作,大多数体面的文本编辑器应该能够做到,但我不知道它是什么。映射函数工作得很好,非常感谢。你是说如果我的输入是元组,eval是危险的吗?如果只是一个值就可以了,对吗?不可以。当eval对它得到的任何代码求值时,有人可以输入类似于_import__subprocess.Popendelete的内容来删除计算机上的所有文件,然后执行它。除此之外,这只是一种糟糕的风格。是的,我在终端中使用了3.4.1。我应该在我的脚本中添加一行Shebang来纠正这一点,还是有办法让TextWrangler与Python 3.4一起运行?我想有办法让TextWrangler与Python 3.4一起工作,大多数体面的文本编辑器应该能够做到,但我不知道它是什么。映射函数工作得很好,非常感谢。你是说如果我的输入是元组,eval是危险的吗?如果只是一个值就可以了,对吗?不可以。当eval对它得到的任何代码求值时,有人可以输入类似于_import__subprocess.Popendelete的内容来删除计算机上的所有文件,然后执行它。除此之外,这只是一种糟糕的风格。