开始用python 3.5.1学习Python

时间:2016-03-28 04:36:33

标签: python python-3.x

我刚开始学习python。当然,我是一个非常初学者(我刚刚在Java中走了几步)。 首先,我安装了最新版本的python并开始学习 Dive Into Python

我必须开始的第一个程序就是这个;

  

第一个PYTHON计划

SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
        1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']} #Line which gives the error
def approximate_size(size, a_kilobyte_is_1024_bytes=True):
    '''Convert a file size to human-readable form.

    Keyword arguments:
    size -- file size in bytes

    a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
    if False, use multiples of 1000
    Returns: string
    '''

    if size < 0:
        raise ValueError('number must be non-negative')

    multiple = 1024 if a_kilobyte_is_1024_bytes else 1000
    for suffix in SUFFIXES[multiple]:
        size /= multiple
        if size < multiple:
            return '{0:.1f} {1}'.format(size, suffix)
    raise ValueError('number too large')

if __name__ == '__main__':
    print(approximate_size(1000000000000, False))
    print(approximate_size(1000000000000))

我将整个内容复制到 python3.5.1 shell 并按 Enter 。然后我得到了一个错误,并用我的第一个程序飞出了所有的快乐。

  

SyntaxError: multiple statements found while compiling a single statement

第一个问题;我有没有正确的方法开始学习python?

我应该如何开始学习python;任何推荐的免费电子书?

我应该使用什么版本?

2 个答案:

答案 0 :(得分:3)

错误以及呈现示例代码的方式表明您将所有内容输入为单行...或者可能以系统视为单行的方式输入。

您遇到的第一个问题是,您只是试图粘贴或复制内容而不了解该代码示例的解释是什么试图告诉您这样做。

从更简单的代码片段开始。

#!/usr/bin/env python3
def greet(someone):
    print('Hello, %s!' % someone)

if __name__ == '__main__':
    greet('World')

这几乎是Python代码中最简单的工作示例。

第一行是一种特殊的评论,它被Linux和其他类Unix操作系统(例如Apple品牌系统上的MacOS X)识别。它找到任何&#34; python3&#34;您的路径上的解释器,并在该解释器下的环境中运行其余代码。

下一行开始一个名为 greet 的函数的 def 定义,并使用一个参数某人。下一行是缩进的。缩进是Python如何区分这个 print() 行是您正在定义的函数的一部分。

这是您在尝试阅读该教程时似乎错过的部分。 Python中有很多东西要求你在它们之后缩进一组行(&#34;套件和#34;代码)。

在我的示例中,我们仅定义了包含单行的函数:具体来说,这是对 print()函数的调用。您可以看到我们将 print()函数作为单个参数传递给表达式。该表达式有点复杂......但它需要一个字符串并对其执行 操作和另一个字符串。这&#34;插值&#34;操作搜索左侧的字符串(&#34;操作数&#34;)表示某些模式(用%字符表示)并用其他操作数中的项替换它们(在 %<的右侧) / em> 运营商)。这样做的效果是打印字符串&#34; Hello,XXXX!&#34; ...将XXXX替换为传递给 greet()函数的任何字符串。

在我们的功能定义之后,我留下一个空白行。这是可选的,但更喜欢这种风格,以便读者可以轻松找到一个代码块与另一个代码块分开的位置。

下一行是&#34; 如果&#34;声明。您将在许多Python脚本中看到这一特定行。当Python正在处理源代码文件时,它会将其作为脚本,正在运行的程序,或者将该代码合并到其他程序或脚本中(通过 < em> import 声明)。当Python将文件作为脚本处理时,它会设置一个名为 _ _ name _ _ 的特殊变量(双下划线,主,双) -underscore)到特殊值&#34; _ _ main _ _ &#34; (否则它是要导入的模块名称的集合。)

因此,当代码作为脚本运行时, if 语句才会成立,而不是在将代码导入其他程序时。在这种情况下,将执行(评估)下一行(必须缩进)。该行是对&#34; greet()&#34;的调用。我们之前定义的函数。

我们可以在此&#34;套件中包含尽可能多的其他声明&#34;我们喜欢只有在 if 条件为真时才会评估它们。第一个凹陷线标志着套房的结束。在处理代码时(作为脚本或在导入操作期间),将对该代码进行评估。

整个代码片段(它的所有六行)的整体效果是实现一个单独的文件,它是一个独立的脚本和一个库(或Python模块)。您可以将其作为脚本运行,方法是将其保存在文件中,并将文件的名称传递给系统上的Python命令,或者将其标记为&#34;可执行文件&#34; (在类Unix系统上)。在MS Windows机器上,您可以使用.py文件扩展名命名该文件,并且在安装Python时,您可能已经在该扩展和Python解释器之间建立了关联。

(要将此文件用作模块,为了能够导入将其添加到另一个Python脚本中,您还必须在类Unix系统上添加.py扩展名;以及#39;就像Python被定义为搜索Python模块的方式一样;虽然有一些更复杂的导入选项,您将在以后学习更多高级知识。< / p>

我的观点是,您无法粘贴文字。你必须阅读并理解它周围的解释是什么。

试试这个小片段。让它运行。然后再回过头来重新阅读Dive into Python的介绍。

答案 1 :(得分:1)

这是因为Python是一种基于解释器的脚本语言,它可以一次执行单个语句。 此错误是由于您复制了多个语句并使解释器误解为整个程序是单个语句。

要解决这个问题,你必须在新文件中复制整个程序,然后使用.py扩展名保存文件,然后在IDLE解释器中运行该文件。

还要注意程序中的空白