【问题标题】:Inability to run python 3 scripts in both IDLE mode and from command prompt无法在 IDLE 模式和命令提示符下运行 python 3 脚本
【发布时间】:2016-03-06 19:10:22
【问题描述】:

我正在尝试使用“学习 Python:像计算机科学家一样思考”这本书来学习 Python,但是在我下载并安装 Anaconda 3 后,我在尝试从 IDLE 模式运行脚本时遇到了一些问题。 (事实上​​一个多星期以来,我一直在尝试解决这个问题。)书上说我们应该编写和测试一个函数,我将脚本保存在文件 print_twice_cat.py 中。但是,每次我尝试运行脚本时,我都会收到以下错误消息: ======== RESTART: C:\Users\USER\Anaconda3\Scripts\print_twice_cat.py ======== . (保存为脚本的其他函数产生相同的输出,错误消息中唯一的变化是 .py 文件名。) 此外,如果我在脚本中包含打印语句(例如 print ('spam')),我会得到打印语句的输出,但脚本中包含的任何函数都没有输出,例如上述。 我也搜索了一下,发现一些网站建议将 C 驱动器中的 python 位置添加到路径变量中。在我的路径变量中,我有:“ipts;C:\users\user\Anaconda3\Library\bin”(不带引号)所以我在最后添加了:;C:\Python35,但我仍然收到相同的 RESTART 消息只要。 在进一步搜索后(在几个站点上,包括 stackoverflow 站点),我决定从 Windows 命令提示符运行 Python 脚本。由于上面的 ;C:\Python35 仍在我的路径变量中,我在 C:\Users\USERS> 提示符下键入了 python,然后在 python 环境中,我在提示符处键入了文件的名称 (print_twice_cat.py) ,但我得到的是这个错误消息:“NameError:'print_twice_cat'未定义。” 我还在 stackoverflow 网站上进行了搜索,得到了这个命令,用于从命令行以空闲模式运行 Python 3:$ python3 -m idlelib -r your_script.py 但是当我输入它时,我得到的消息是:语法错误:无效的语法。 此外,我的 Anaconda python 版本是 Python 3.5.1,我的操作系统是 windows 7,第 32 位。我非常感谢任何可以帮助我解决这两个问题的建议/建议,因为它们真的让我的学习工作感到沮丧。此外,它将帮助可能面临相关挑战的其他用户。 还请在下面找到相关脚本文件的内容:

> def print_twice(bruce):
>     print(bruce)
>     print(bruce)
> 
> 
> def cat_twice(part1, part2):
>     cat = part1 + part2
>     print_twice(cat)
> 
> 
>   line1 = 'Bing tidddle'
>   line2 = 'tiddle bing'
>   cat_twice = (line1,line2)

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    这个

    ===========重新开始=============

    这意味着此时屏幕上的输出是存储在文件 print_twice_cat.py 中的代码的输出。这不是错误。 由于您学习python,您无法知道函数仅定义代码,在调用它们之前不会做任何事情。(所以它们也不会单独打印)

    例如,我正在编写一个在屏幕上打印 LaLaLa 两次的函数:

        def myfunction():
            print('LaLaLa')
            print('LaLaLa')
    
        myfunction()
    

    前三行除了定义函数“myfunction”之外什么都不做。第四个语句调用函数和函数体中定义的代码

    【讨论】:

    • 首先,感谢您抽出宝贵时间帮助我,但请您提供更多说明吗?有问题的脚本实际上定义了 2 个函数,但也为第二个函数提供了一些参数,就在脚本中调用它之前。在那种情况下,它不会产生输出吗?为了更清楚,我将重新编辑我的答案以包含脚本的内容(我目前无法这样做),并会在我这样做后立即通知您。感谢您期待的帮助。
    • 您好,我已将脚本文件的内容添加到问题中。谢谢。
    • 嗨,我已经重新格式化了代码,现在已经很好地呈现了。请您考虑一下我之前问过的问题来帮助我:即脚本中定义的两个函数以及稍后为第二个函数提供的一些参数,它不应该产生输出,而不是当前产生的输出吗?非常感谢您期待的帮助。
    • 它应该创建一个,查看下面的答案
    【解决方案2】:

    答案如下:

    您尝试使用元组分配变量。要调用你的函数,只需这样做:

    cat_twice(line1,line2)
    

    这将调用函数cat_twice 并传递参数line1 和line2。如果你像以前那样做,你会创建一个里面有一个元组的 var,元组是这样创建的:(tupleobj1, tupleobj2, etc),因此你的代码不起作用

    编辑

    这是一段绝对有效的代码,你可以使用它:

    def print_twice(var):
        print(var)
        print(var)
    
    def combine_and_print(obj1, obj2):
        string = str(obj1) + str(obj2)
        print_twice(string)
    
    line = 'bing'
    line2 = 'tiddle'
    
    combine_and_print(line, line2)
    

    这行得通,我自己在 python3 上试过了。如果它仍然不起作用,我认为你那里有拼写错误或类似的东西。

    点赞或“已接受答案”,以便我知道这是否有效,否则只需发表评论,我将查看答案。

    【讨论】:

    • 谢谢,我明白你的意思了,我没有正确调用函数。但是,我已将该行更改为 cat_twice(line1,line2),但脚本仍然没有生成任何输出,只有相同的 RESTART 消息,没有别的。还有什么问题?
    • 为了帮助我现在帮助你,你需要告诉我你期望的输出。我想你想要我编辑的东西到我的第二个答案
    • 已接受喜欢/回答。非常感谢!你真的让我很开心。但我还有一个问题。首先,我只是简单地复制了您的代码并将其粘贴到一个新的脚本文件中,当我运行脚本时,它产生了一个输出:它生成了两次脚本“bingtiddle”。我的问题是,为什么我修改后的脚本文件仍然不起作用?仅仅是代码有问题吗?或者甚至可能是因为教科书最初是为 python2 编写的,后来又为 python 3 重新修改,因此我的代码可能适用于 python 2 而不是 python 3?
    • 对不起,我不知道这可能是一个名称错误,它是 hdden 或只是输入错误
    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2017-03-10
    • 2014-03-18
    相关资源
    最近更新 更多