无法在IDLE模式和命令提示符

时间:2016-03-06 19:10:22

标签: python-3.x

我正在尝试使用“学习Python:像计算机科学家一样思考”一书来学习Python,但是在我下载并安装Anaconda 3之后,我在尝试从IDLE模式运行脚本时遇到了一些问题。 (事实上​​一个多星期以来,我一直在努力解决这个问题。)本书说我们应该编写和测试一个函数,我将脚本保存在print_twice_cat.py文件中。但是,每次我尝试运行脚本时,我只会收到以下错误消息:======== RESTART:C:\ Users \ USER \ Anaconda3 \ Scripts \ print_twice_cat.py ======== 。 (保存为脚本的其他函数会生成相同的输出,错误消息中的唯一更改是.py文件名。)    另外,如果我在脚本中包含一个print语句(例如print('spam')),我会得到print语句的输出,但是没有输出脚本中包含的任何函数,如上所述。       我也google了一下,发现一些网站建议将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,bit 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)

2 个答案:

答案 0 :(得分:1)

=========== RESTART =============

这就意味着此时屏幕上的输出是存储在文件funs()中的代码的输出。这不是错误。 既然你的学习python,你不可能知道函数只定义代码,不会在它们被调用的情况下做任何事情。(所以它们也不能单独打印)

例如,我正在编写一个功能,在屏幕上两次打印LaLaLa:

print_twice_cat.py

除了定义函数'myfunction'之外,前三行没有任何作用。第四个语句调用函数,因此函数体中定义的代码

答案 1 :(得分:0)

以下是答案:

您尝试使用元组分配变量。要调用你的函数,只需执行以下操作:

cat_twice(line1,line2)

这将调用函数cat_twice并传递参数line1和line2。如果你这样做,你将创建一个带有元组的var,元组就像这样创建:(tupleobj1,tupleobj2等),因此你的代码没有工作

修改

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

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上尝试过了。如果它仍然不起作用,我认为你在那里有拼写错误或类似的东西。

接受一个喜欢或接受的答案'所以我知道这是否有效,否则只需发表评论我会回答答案。