美文网首页开源软件实验室IT课程分享IT小白
极度舒适的Python入门教程,已有49695人撸过

极度舒适的Python入门教程,已有49695人撸过

作者: 蓝桥云课 | 来源:发表于2019-03-28 16:21 被阅读32次

    本教程基于 Python for you and me 教程翻译制作,其中参考了 Python tutorial 和 The Python Standard Library,并对原教程的内容进行了改进与补充。
    相关链接地址如下:
    Python tutorial:http://www.pythondoc.com/pythontutorial3/index.html
    Python for you and me:http://pymbook.readthedocs.io/en/latest/
    The Python Standard Library:https://docs.python.org/3/library/index.html

    本教程属于初级入门级别,不仅适用于那些有其它语言基础的同学,对没有编程经验的同学也非常友好舒适。

    整个教程完全免费。学习过程在实验楼在线环境中进行,在开启Python之旅前,建议您熟悉下我们的学习界面,这将帮助你更加高速地进入学习

    一、和解释器玩耍

    Python 是一个脚本语言,你可以在 Python 解释器中直接写代码或者将代码写到一个文件里,然后执行这个文件(即脚本文件)。
    首先,我们从使用解释器开始,打开 Xfce 终端,键入python3 并回车。这个时候解释器便工作于交互模式。



    作为我们第一个 Python 代码,我们将打印经典的 "Hello World!",输入python3,如下所示:

    print("Hello World!")
    Hello World!
    

    欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器。

    二、了解脚本文件

    作为正式的程序员,你可能想要将上述的代码写到一个源文件。那么我们来创建一个 helloworld.py 文件,用你喜欢的任何编辑器来创建这个文件,我使用 Vim ,你可以使用基于 GUI 的工具,如实验楼环境桌面上的 gedit。

    我们建议使用 Vim,在这里我们简单的使用它,你可以在实验楼的课程 Vim编辑器 里深入学习或者通过这张 vi(vim)键盘图帮助你记忆:

    首先,创建的文件会放在 /home/shiyanlou 目录下,打开 Xfce 终端,键入 vim helloworld.py 来启动 Vim 并编辑 helloworld.py,启动后不要乱按键。

    然后按 i 键进入插入模式,此时你可以看到左下角有 “插入” 两个字,现在你可以键入下面的代码了。

    #! /usr/bin/env python3
    print("Hello World!")
    

    其中第一行的前两个字符 #! 称为 Shebang ,目的是告诉 shell 使用 Python 解释器执行其下面的代码。


    然后按 Esc 键退出插入模式,再键入 :wq 回车,Vim 就会保存文件并退出。

    要运行脚本文件 helloworld.py,还要为文件添加可执行权限(否则会出现权限不足的错误):

    $ chmod +x helloworld.py
    

    在这里使用到了linux下的chmod命令来变更文件或目录的权限,+x代表赋予了其可执行的权限。然后执行脚本文件:

    $ ./helloworld.py
    

    这里需要注意如果程序中没有 #!/usr/bin/env python3 的话,应该使用 python3 helloworld.py 来执行,否则使用 ./helloworld.py 程序会被当作 bash 脚本来执行,最终报错。

    三、代码风格建议

    在 Python 中,空格很重要,我们使用空格将标识符区分开,行开始处的空格我们称之为缩进,如果你的缩进是错误的,Python 解释器会抛出错误。例如下面情形:

    >>>   a = 12
      File "<stdin>", line 1
        a = 12
        ^
    IndentationError: unexpected indent
    

    这是因为第二行开始处出现了多余的空格,所以需要经常检查代码的缩进。

    如果你在代码中混用制表符和空格,这种缩进错误会很常见。

    所以如果是用空格,就一直用空格缩进,不要使用制表符。

    建议遵守以下约定:

    • 使用 4 个空格来缩进
    • 永远不要混用空格和制表符
    • 在函数之间空一行
    • 在类之间空两行
    • 字典,列表,元组以及参数列表中,在 , 后添加一个空格。对于字典,: 后面也添加一个空格
    • 在赋值运算符和比较运算符周围要有空格(参数列表中除外),但是括号里则不加空格:a = f(1, 2) + g(3, 4)

    四、不注释,被鄙视

    注释是一些文本用来解释此处代码是做什么的,写注释是为了使他人更容易理解代码。

    Python 的注释以 # 字符开始的,在 # 字符到行尾之间的所有东西都被程序忽略为注释,也就说对程序没有任何影响。

    >>> # 下面这一行是求两数之和
    >>> a = 12 + 34
    >>> print(a) # 这里也是注释 :)
    

    注释主要面向的人群是开发人员和维护代码库的人员,所以如果你写了一些复杂代码,你应该写足够的注释在里面,以便让其他任何人能够通过你的注释读懂代码。你应该总是在 # 后跟一个空格,然后再写注释。你也可以做一些标准的注释,像下面这样。

    # FIXME -- fix these code later
    # TODO -- in future you have to do this
    

    五、模块简介

    模块是包含了我们能复用的代码的文件,包含了不同的函数定义,变量。模块文件通常以 .py 为扩展名。
    Python 本身在默认安装时就带有大量的模块。我们之后将会用到其中的一部分。在使用模块前先导入它。

    >>> import math    # 导入math模块
    >>> print(math.e)
    2.71828182846
    

    我们会在模块这个实验里学习更多有关模块的知识。

    六、认识关键字和标识符

    每一种编程语言都有它们自己的语法规则,就像我们所说的外语。
    下列的标识符是 Python3 的关键字,并且不能用于通常的标识符。关键字必须完全按照下面拼写:

    False               def                 if                  raise
    None                del                 import              return
    True                elif                in                  try
    and                 else                is                  while
    as                  except              lambda              with
    assert              finally             nonlocal            yield
    break               for                 not                 
    class               from                or                  
    continue            global              pass
    

    这些内容可以在 Python3 解释器中得到:


    在 Python 中 我们不需要为变量指定数据类型。所以你可以直接写出 abc = 1 ,这样变量 abc 就是整数类型。如果你写出 abc = 1.0 ,那么变量 abc 就是浮点类型。

    >>> a = 13
    >>> b = 23
    >>> a + b
    36
    

    通过上面的例子你应该理解了如何在 Python 中定义变量,也就是只需要输入变量名和值就行了。Python 也能操作字符串,它们用单引号或双引号括起来,就像下面这样。

    >>> 'ShiYanLou'
    'ShiYanLou' 
    >>> 'ShiYanLou\'s best' 
    "ShiYanLou's best" 
    >>> "Hello World!" 
    'Hello World!'
    

    七、从键盘读取输入

    通常情况下,Python 的代码中是不需要从键盘读取输入的。不过我们还是可以在 Python 中使用函数 input() 来做到这一点,input() 有一个用于打印在屏幕上的可选字符串参数,返回用户输入的字符串。

    我们来写一个程序,它将会从键盘读取一个数字并且检查这个数字是否小于 100。这个程序名称是 /home/shiyanlou/testhundred.py。还记得如何使用 Vim 吗?忘了的话可以看看下面的动图,打开 Xfce 终端,使用 Vim 开始编写代码:

    在终端中输入:

    $ vim testhundred.py
    

    输入i后,编写以下代码:

    #!/usr/bin/env python3
    number = int(input("Enter an integer: "))
    if number <= 100:
        print("Your number is less than or equal to 100")
    else:
        print("Your number is greater than 100")
    

    接着按 ESC 键并输入 :wq 退出Vim。

    该段代码的含义如下:

    如果 number 小于等于 100,输出 “Your number is less than or equal to 100”,如果大于 100,输出 “Your number is greater than 100”。

    在执行程序前,别忘了为文件添加可执行权限:

    $ chmod +x testhundred.py
    

    程序运行起来就像这样:

    $ ./testhundred.py
    Enter an integer: 13
    Your number is less than or equal to 100
    $ ./testhundred.py
    Enter an integer: 123
    Your number is greater than 100
    

    后续程序中将会用到之后实验将学到的 while 循环语句,这里先简单介绍下。

    while 是使用一个表达式作为判断的条件,如果条件不能够达成则停止循环:

    w = 20
    while w > 1:
        print(w)
        w -= 1
    

    这个循环中判断条件为 w > 1,当条件不满足的时候就停止循环。当 w 的值小于等于 1 的时候,循环退出。这里要注意 w -= 1,等同于 w = w - 1。

    下一个程序我们写入 /home/shiyanlou/investment.py,来计算投资,使用 Vim 输入以下代码:

    #!/usr/bin/env python3
    amount = float(input("Enter amount: "))  # 输入数额
    inrate = float(input("Enter Interest rate: "))  # 输入利率
    period = int(input("Enter period: "))  # 输入期限
    value = 0
    year = 1
    while year <= period:
        value = amount + (inrate * amount)
        print("Year {} Rs. {:.2f}".format(year, value))
        amount = value
        year = year + 1
    

    运行程序:

    $ cd /home/shiyanlou
    $ chmod +x investment.py
    $ ./investment.py
    Enter amount: 10000
    Enter Interest rate: 0.14
    Enter period: 5
    Year 1 Rs. 11400.00
    Year 2 Rs. 12996.00
    Year 3 Rs. 14815.44
    Year 4 Rs. 16889.60
    Year 5 Rs. 19254.15
    

    while year <= period: 的意思是,当 year 的值小于等于 period 的值时,下面的语句将会一直循环执行下去,直到 year 大于 period 时停止循环。

    Year {} Rs. {:.2f}".format(year, value) 称为字符串格式化,大括号和其中的字符会被替换成传入 str.format() 的参数,也即 year 和 value。其中 {:.2f} 的意思是替换为 2 位精度的浮点数。

    八、代码示例

    一些关于变量和数据类型的代码实例。下面的例子程序请都写在 /home/shiyanlou 目录下。

    本部分包括下面的几个实例:

    • 求 N 个数字的平均值
    • 华氏温度到摄氏温度转换程序

    请按照指定目录完成每个程序,并理解每个程序中每行代码的含义。

    1. 求 N 个数字的平均值

    下面的程序用来求 N 个数字的平均值。请将程序代码写入到文件 /home/shiyanlou/averagen.py 中,程序中将需要输入 10 个数字,最后计算 10 个 数字的平均值。

    代码内容,请理解每一行代码含义:

    #!/usr/bin/env python3
    N = 10
    sum = 0
    count = 0
    print("please input 10 numbers:")
    while count < N:
        number = float(input())
        sum = sum + number
        count = count + 1
    average = sum / N
    print("N = {}, Sum = {}".format(N, sum))
    print("Average = {:.2f}".format(average))
    

    运行程序过程,需要输入 10 个数字:

    $ cd /home/shiyanlou
    $ chmod +x averagen.py
    $ ./averagen.py
    1.2
    3.4
    3.5
    33.2
    2
    4
    6
    2.4
    4
    5.5
    N = 10, Sum = 65.2
    Average = 6.52
    
    2. 温度转换

    在下面的程序里,我们使用公式 C = (F - 32) / 1.8 将华氏温度转为摄氏温度。

    #!/usr/bin/env python3
    fahrenheit = 0
    print("Fahrenheit Celsius")
    while fahrenheit <= 250:
        celsius = (fahrenheit - 32) / 1.8 # 转换为摄氏度
        print("{:5d} {:7.2f}".format(fahrenheit , celsius))
        fahrenheit = fahrenheit + 25
    {:5d} 的意思是替换为 5 个字符宽度的整数,宽度不足则使用空格填充。 {:7.2f}的意思是替换为为7个字符宽度的保留两位的小数,小数点也算一个宽度,宽度不足则使用空格填充。其中7指宽度为7,.2f指保留两位小数。
    

    运行程序:

    $ cd /home/shiyanlou
    $ chmod +x temperature.py
    $ ./temperature.py
    Fahrenheit Celsius
        0  -17.78
       25   -3.89
       50   10.00
       75   23.89
      100   37.78
      125   51.67
      150   65.56
      175   79.44
      200   93.33
      225  107.22
      250  121.11
    

    九、单行定义多个变量或赋值

    你甚至可以在一行内将多个值赋值给多个变量。

    在终端中输入:

    $ python3
    

    进入到 python3 交互式界面:

    >>> a , b = 45, 54
    >>> a
    45
    >>> b
    54
    

    这个技巧用来交换两个数的值非常方便。

    >>> a, b = b , a
    >>> a
    54
    >>> b
    45
    

    要明白这是怎么工作的,你需要学习元组(tuple)这个数据类型。我们是用逗号创建元组。在赋值语句的右边我们创建了一个元组,我们称这为元组封装(tuple packing),赋值语句的左边我们则做的是元组拆封 (tuple unpacking)。

    下面是另一个元组拆封的例子:

    >>> data = ("shiyanlou", "China", "Python")
    >>> name, country, language = data
    >>> name
    'shiyanlou'
    >>> country
    'China'
    >>> language
    'Python'
    
    怎么样?是不是完全没有挑战性?感觉很简单?你不要高兴的太早,接下来的部分,难度会一点点增加,也会让你越来越有成就感。让我们简单看下还有什么等着你:

    十、就是动手刚啊

    编程是一门实践的学科,动手无疑是最高效的学习方式;实验楼的教程设计理念也是如此:从实践切入,依靠交互性、操作性更强的方式,理论学习+动手实践激发创造力。

    因为整个教程内容庞大,就不全部贴在这里了,最终还是要大家去动手练习。建议你找一个安静的时间,打开电脑学习:开启Python之旅

    如果你需要更多Python学习的资源和帮助,也可以申请加入我们的Python微信交流群,群里既有大牛,也有跟你一样的初学者。(进群方式:关注实验楼微信公众号(实验楼),回复关键字“Python交流群” 即可)

    相关推荐

    20个Java练手项目,献给嗜学如狂的人
    大牛推荐的10本学习 Python 的好书
    别再说找不到Python练手项目了,这80个拿去过冬
    40个大数据学习资源
    PHP学习资源整理:入门到进阶全系列
    8个程序员专用软件/网站,个个是神器,第一个最惊喜......
    RabbitMQ 消息队列
    Redis基础教程)
    Shell脚本实现打字游戏
    Python Flask Web框架
    Python 图片转字符画
    Python实现3D建模工具
    Python3 实现色情图片识别

    相关文章

      网友评论

        本文标题:极度舒适的Python入门教程,已有49695人撸过

        本文链接:https://www.haomeiwen.com/subject/kduqbqtx.html