Python简介

python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白。大家都知道,当下全栈工程师的概念很火,而Python是一种全栈的开发语言,所以你如果能学好Python,那么前端,后端,测试,大数据分析,爬虫等这些工作你都能胜任。

Python入门

一、python安装

windows系统:

1、下载安装包
    https://www.python.org/downloads/
2、安装
    默认安装路径:C:\python35
3、配置环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
    如:原来的值;C:\python35,切记前面有分号
linux系统:

无需安装,原装Python环境
 
ps:如果自带2.6,请更新至3.0以上
环境:yum install openssl-devel gcc++ gcc 可直接安装pip
 
更新版本到3.5.2
下载:wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
 
解压:tar zxvf Python-3.5.2.tgz
 
编译:cd Python-3.5.2
         ./configure --prefix=/usr/local/python3.5
 
安装:make && make install
 
默认安装位置/usr/local/lib/python3.5
 
执行命令python3.5进入到运行环境
 
mv /usr/bin/python /usr/bin/python2.7.7
ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python
修改yum环境     vi /usr/bin/yum
改为如下内容  #!/usr/bin/python2.7.7

建议使用pyenv(Python版本控制2.7和3.5之间随意切换)、virtualenv(Python虚拟环境)、pycharm(Python的IDE工具)、pip(Python包管理工具)。

pip安装:

windows:
1.在以下地址下载最新的PIP安装文件:http://pypi.python.org/pypi/pip#downloads
2.下载pip-9.01.tar.gz (md5, pgp)完成之后,解压到一个文件夹,用CMD控制台进入解压目录,输入:python setup.py install 
3.安装好之后,我们直接在命令行输入pip,同样会显示‘pip’不是内部命令,也不是可运行的程序。因为我们还没有添加环境变量
C:\Python27\Scripts
 
linux:
1、官网下载pip安装包 https://pypi.python.org/pypi/pip
2、解压下载的文件 tar zxvf pip-9.0.1.tar.gz
3、安装 python setup.py install
4、执行pip命令进行验证       ln -s /usr/local/python3.5/bin/pip3 /usr/bin/pip

二、编写Hello,World

  两种方式输出Hello World,第一种我们用解释器交互式环境,打开shell输入python。

[root@localhost ~]# python3
Python 3.5.1 (default, Mar 29 2017, 13:52:32) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello,Woeld!")
Hello,Woeld!
[root@localhost ~]# cat hello.py 
print("Hello,Woeld!")
[root@localhost ~]# python hello.py 
Hello,Woeld!

 

Python3 基础语法

行和缩进

学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。如下所示:

if True:
print ("True")
else:
print ("False")

有的是 tab 键缩进,有的是空格缩进,改为一致即可。

因此,在Python的代码块中必须使用相同数目的行首缩进空格数。

建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用

Print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

#!/usr/bin/python3

x="a"
y="b"
# 换行输出
print( x )
print( y )

print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()

多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句,例如:

total = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\),例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

等待用户输入

执行下面的程序在按回车键后就会等待用户输入:

#!/usr/bin/python3

input("\n\n按下 enter 键后退出。")

以上代码中 ,"\n\n"在结果输出前会输出两个新的空行。一旦用户按下键时,程序将退出。

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

#!/usr/bin/python3

import sys; x = 'runoob'; sys.stdout.write(x + '\n')

多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句(clause)。

如下实例:

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite


更多python的基础教程 http://www.runoob.com/python3/python3-basic-syntax.html

三、变量&字符编码

变量

常量我们约定俗成都为大写

1、变量声明:

  1. Python将所有数据存为内存对象
  2. Python中,变量事实上是指向内存对象的引用
  3. 动态类型:在任何时刻,只要需要,某个对象引用都可以重新引用一个不同的对象(可以是不同的数据类型)内建函数type()用于返回给定数据项的数据类型
  4. "="用于将变量名与内存中的某个对象绑定:如果对象实现存在,就直接进行绑定;否则,则由"="创建引用的对象,变量名也是对象存在内存,比如:name='jerry',name这个指针指向jerry,name='tom'的时候,name是指针指向tom,但是jerry仍在内存中存放着,只是没有被变量名指向,到一定时候会被垃圾收集器回收,和java有点像。其中当test='jerry'时,test和name这两个变量名指向内存的地址是一样的。id(test),id(name),变量名是内存引用的标识或符号。

2、变量定义的规则:

  1. 变量名只能是 字母、数字或下划线的任意组合
  2. 变量名的第一个字符不能是数字
  3. 以下关键字不能声明为变量名

   ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise','return', 'try', 'while', 'with',             'yield']

3、变量最佳命方式:

  1. 使用下划线'_'作为连接,如 name_variables
  2. 使用大小写,称为驼峰法,如 NameVariables,nameVariables

  注意:两种命名方式不要混用,只要你喜欢的一种即可

4、变量命名惯例:

  1. 以单一下划线开头的变量名(_x)不会被from module import * 语句导入
  2. 以两个下划线开头但结尾没有下划线的变量名(__x)是类的本地变量
  3. 前后有双下划线的变量名(__x__)是系统定义的变量名,对python解释器有特殊意义
  4. 交互式模式下,变量名"_"用于保存最后表达式的结果

字符编码

1、ASCII

  ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号,python2.x解释器默认是ASCII编码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

2、Unicode

  Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,注:此处说的的是最少2个字节,可能更多,比如汉字就需要3个字节,python3.x解释器默认是Unicode编码。

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

 

所以,python2.x解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII),如果是如下代码的话:

 

[root@localhost ~]# cat hello.py 
#!/usr/bin/env python
print "你好!世界"
[root@localhost ~]# python hello.py 
  File "hello.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file hello.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
print "你好,世界"
[root@localhost ~]# python hello.py 
你好!世界

所以如果大家在学习过程中,代码中包含中文,就需要在头部指定编码。

注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。

四、用户交互及字符串拼接

跟用户进行交互,并把输入的信息打印出来

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# -Author-zsq
###########用户交互及字符串拼接################
# python2.X与python3.X区别:    python2.X raw_input = python3.X input
# 提示用户输入姓名、年龄、工作、工资并以信息列表的形式打印出
 
name = input("Please input your name:")
age = int(input("Please input your age:"))  #str强制转换为int
job = input("Please input your job:")
salary = input("Please input your salary:")
 
info1 = '''
------------  Info of %s  ---------
Name:%s
Age:%d
Job:%s
Salary:%s
''' %(name,name,age,job,salary)     #%s检测数据类型为字符串,%d检测数据类型为整数,%f检测数据类型为浮点数 强制
print(info1)
 
info2 = '''
------------  Info of {_Name}  ---------
Name:{_Name}
Age:{_Age}
Job:{_Job}
Salary:{_Salary}
''' .format(_Name=name,
            _Age=age,
            _Job=job,
            _Salary=salary)
print(info2)
 
info3 = '''
------------  Info of {0}  ---------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
''' .format(name,age,job,salary)
print(info3)

五、if判断语句

① 实例:用if语句验证用户登录,密文密码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# -Author-zsq
#############验证用户登录-密文密码##############
# 提示输入用户名密码
# 验证用户名密码
#       如果错误,则输出用户名密码错误
#       如果成功,则输出欢迎,xxx!
#在pycharm IDE工具中这段代码是行不通的,在Linux命令行或者Windows cmd中是可以的
import getpass  # 标准模块,import调用

name = input("Please input your name:")
password = getpass.getpass("Please input your password:")

if name == "lzl" and 'pwd'  == "lzl@123":
    print("Welcome to,lzl!")
else:
    print("The user name and password mistake")

② 实例:用if语句实现猜幸运数字游戏

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-zsq
##############猜幸运数字################
# 提示用户输入猜的幸运数字(1-100)
# 根据输入的数字做判断
#         如果猜对,输出恭喜你猜对了
#         如果猜的数字大了,输出数字往小点猜
#         否则,输出数字往大点猜
 
lucky_num = 66
 
guess_num = int(input("Please enter your guess lucky number(1-100):"))
 
if guess_num == lucky_num:
    print ("Congratulations you guessed it!")
elif guess_num > lucky_num :
    print ("Think it smaller...")
else:
    print ("Think it bigger...")

六、while循环语句

① 实例:猜数字游戏升级版(循环猜数字,直到猜到为止)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-zsq
##############猜幸运数字################
 
lucky_num = 66       # 设置幸运数字
 
while True:    # while循环:
                     # 输入猜的的幸运数字范围1-100
    guess_num = int(input("Please enter your guess lucky number(1-100):"))
 
    if guess_num == lucky_num:      # 如果猜对,输出恭喜你猜对了,并退出
        print ("Congratulations you guessed it!")
        break                       #break 结束循环 continue 跳出本次循环,继续下次循环 exit 结束程序
    elif guess_num > lucky_num :    # 如果猜的数字大了,输出数字往小点猜
        print ("Think it smaller...")
    else:                           # 否则,输出数字往大点猜
        print ("Think it bigger...")
    

② 实例:猜数字游戏完善版(循环猜数字,允许猜三次机会)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-zsq
##############猜幸运数字+次数限制################
 
lucky_num = 66       # 设置幸运数字
count = 0            # 设置初始值count=0
 
while count < 3 :    # while判断count是否小于3,如果小于3则:
                     # 输入猜的的幸运数字范围1-100
    guess_num = int(input("Please enter your guess lucky number(1-100):"))
 
    if guess_num == lucky_num:      # 如果猜对,输出恭喜你猜对了,并退出
        print ("Congratulations you guessed it!")
        break                       #break 结束循环 continue 跳出本次循环,继续下次循环 exit 结束程序
    elif guess_num > lucky_num :    # 如果猜的数字大了,输出数字往小点猜
        print ("Think it smaller...")
    else:                           # 否则,输出数字往大点猜
        print ("Think it bigger...")
    count += 1                       #每次循环结束count加1
else:
    print ("You tried so many times!")  #while循环超过三次,则输出试过太多次了

七、for循环语句

实例:用for循环实现猜数字游戏,限制三次机会

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-zsq
##############猜幸运数字+次数限制################
 
lucky_num = 66       # 设置幸运数字
 
for i in range(3):    # while判断count是否小于3,如果小于3则:
                     # 输入猜的的幸运数字范围1-100
    guess_num = int(input("Please enter your guess lucky number(1-100):"))
 
    if guess_num == lucky_num:      # 如果猜对,输出恭喜你猜对了,并退出
        print ("Congratulations you guessed it!")
        break                       #break 结束循环 continue 跳出本次循环,继续下次循环 exit 结束程序
    elif guess_num > lucky_num :    # 如果猜的数字大了,输出数字往小点猜
        print ("Think it smaller...")
    else:                           # 否则,输出数字往大点猜
        print ("Think it bigger...")
else:
    print ("You tried so many times!")  #while循环超过三次,则输出试过太多次了

八、扩展

① 编写登陆接口 要求:

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

# 流程图如下: 

Python自动化运维之1、Python入门

 # login_interface.py 程序代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-zsq
################登录接口程序################

# -*-      运行环境python3.5.2   -*-
#user_information、locked_information、day1_login_interface.py三个文件拷贝到同一级目录
#授权:chmod 755  day1_login_interface.py
#执行:python  day1_login_interface.py

####记录可登录用户、密码信息文件user_information####
# Dave    dave123
# John    john123
# Luffy    luffy123
####记录被锁定的用户信息文件locked_information####
# lzl
# Alex

#
Count = 1                           #设置计数器,统计下面第一个while大循环的次数 赋值变量Count,初始值为1
Last_user = ""                     #针对上次登录的用户名进行记录,如果连续三次登录错误的用户名是一致的话才进行锁定
                                    #赋值变量Last_user,初始值为空
Match_count = 1                     #统计Last_user与上次登录的用户名匹配的次数,变量Match_count初始值为1

while True:
    Locked = open("locked_information", "r")  # 读取被锁定用户名信息文件
    User_pwd = open("user_information", "r")  # 读取可登录的用户、密码信息文件

    User = input("Please enter the login username:")            #提示用户输入登录用户名并赋值给User
    Passwd = input("Please enter login password:")              # 提示用户输入登录密码并赋值给Passwd

    if len(User) == 0:
        print("Error:Enter the user is null! please try again..")
        continue
    if Last_user == User:           #if语句判断,本次登录的用户名跟上次登录的用户名是否匹配
        Match_count +=1             #如果匹配成功,表示两次连续登录的用户名一致,Match_count计数加1
    else:                           #如果匹配失败,Match_count计数恢复为初始值1
        Match_count = 1

    Re_count = 3 - Count            #设置变量Re_count为还进行登录的剩余次数,判断登录失败后会用到


    for Blacklist in Locked.readlines():            #for循环读取被锁定用户名,生成变量Blacklist
        Blacklist = Blacklist.strip("\n")           #对变量Blacklist进行去换行符操作
        if User == Blacklist:                   #判断如果输入的用户名在Blacklist中,则提示用户被锁定并退出登录
            print ("Login username ",User," is locked, login fails...")
            exit()                                #退出程序

    for i_f_m in User_pwd.readlines():              #for循环读取可登录用户、密码信息文件,赋值变量i_f_m
        i_f_m = (i_f_m.strip("\n")).split()             #对变量i_f_m进行先去换行符,然后以空格符分割为列表的操作
        if User == i_f_m[0] and Passwd == i_f_m[1]:     #对登录用户名和密码进行匹配,两者都匹配成功则显示恭喜登陆成功
            print ("Congratulations to login successful!")
            exit()                                #退出程序
            print(User,Passwd)

    else:
        if Re_count > 0 :    #验证上面for循环匹配失败并且剩余登录次数大于0后,提示错误和剩余次数
                             #如果去掉if判断,则在匹配用户锁定时打印信息重合,放到下面while循环里面则会添加多余输出
            print("Error: The username and password mistate!  You can also try", Re_count, "times...")

        while Re_count > 0 :    #while循环语句,重试登录次数大于0时,提示用户是否还要继续登陆
            If_cont = input("Whether or not to continue to login?(Y/N):")
            if If_cont == "Y":                  #匹配字符Y
                break                           #跳出当前while,重新输入用户名密码
            elif If_cont == "N":                #匹配字符N
                print ("-- Bye --")
                exit()                           #终止程序
            else:                               #字符输入错误,重新提示输入正确的字符Y 和 N
                print("*        Please enter 【Y】 or 【N】        *")
                continue                        #跳出当前循环执行下次循环
        else:                   #while循环语句,当用户重试登录次数为0时,执行下面语句
            if Match_count == 3:                #连续三次输入的用户名一致,把用户名加入到黑名单
                Locked = open("locked_information", "a")    #对文件locked_information追加写操作
                Locked.write(User + "\n")       #把用户名写入到黑名单并执行下换行符
                print("Error: The username and password mistate! The current user ",User," is locked...")
                break                           #提示锁定用户并退出程序
            else:                               #连续三次输入的用户名不一致,提示用户名密码错误,不进行锁定
                print ("Error: The username and password mistate! Bye-bye!")
                break                          #退出程序

    Count +=1                                   #循环结束,Count计数加1
    Last_user = User                            #循环结束,Last_userc重新赋值
Locked.close()
User_pwd.close()
View Code

相关文章: