Python简介


python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  

最新的TIOBE排行榜,Python赶超PHP占据第五!!!

Python谁家的 python谁开发_Python

 

由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!


 

Python的种类

  • Cpython
        Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
  • Jyhton
        Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
  • IronPython
        Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
  • PyPy(特殊)
        Python实现的Python,将Python的字节码字节码再编译成机器码。
  • RubyPython、Brython ...

 

Python环境


安装python环境

  mac上默认安装的是python 2.7 ,如果要安装3.x版本,可以使用pyenv引擎。 pyenv地址如下:

  https://github.com/pyenv/pyenv

      可以结合virtualenv安装配置python,  pyenv-virtuanenv 地址:

  https://github.com/pyenv/pyenv-virtualenv

      关于使用,github有详细说明

 

python编码  

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

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

Python谁家的 python谁开发_字符串_02

 

 

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

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

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

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

报错:ascii码无法表示中文

1 #!/usr/bin/env python
2 print("您好")

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

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 print("您好")

或者,如果你直接使用unicode的“您好”也可以,即:

1 #!/usr/bin/env python
2 print(u"您好")

 

注释

  当行注视:# 被注释内容

  多行注释:""" 被注释内容 """

 

pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

 

变量

变量定义的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
• ['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']

要查看系统有哪些关键字可以这么看:

Python谁家的 python谁开发_python_03

 

 

while循环

Python谁家的 python谁开发_Python谁家的_04

 

 

基本数据类型


 

1、字符串

2、布尔类型
3、整数
4、浮点数
5、数字
6、列表
7、元组
8、字典
9、日期

1、字符串

1.1、如何在Python中使用字符串
a、使用单引号(')
用单引号括起来表示字符串,例如:
str='this is string';
print str;b、使用双引号(")
双引号中的字符串与单引号中的字符串用法完全相同,例如:
str="this is string";
print str;c、使用三引号(''')
利用三引号,表示多行的字符串,可以在三引号中自由的使用单引号和双引号,例如:
str='''this is string
this is pythod string
this is string'''
print str;2、布尔类型
bool=False;
print bool;
bool=True;
print bool;3、整数
int=20;
print int;4、浮点数
float=2.3;
print float;5、数字
包括整数、浮点数。
5.1、删除数字对象引用,例如:
a=1;
b=2;
c=3;
del a;
del b, c;
#print a; #删除a变量后,再调用a变量会报错 
 a. 整数 int
             - 创建
                a = 123
                a = int(123)
             - 转换
                age = "18"
                new_age = int(age)
        b. 布尔值 
             - 创建
                a = True
                b = False
             - 转换
                - 数字转换,只有0是False,其他True
                - 字符串,  只有""是False,其他True
                - 待续...

        c. 字符串
             - 创建
                a = "alex"
                a = str('alex')
             - 转换
                age = 19
                new_age = str(age)
             - 字符串的拼接
                    name = 'alex'
                    gender = '女'
                    new_str = name + gender
                    print(new_str)

             - 字符串格式化    
                    # 占位符,
                    # name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!'
                    # new_str = name %('男',19,)
                    # print(new_str)                    name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' %('男',19,)
                    print(name)

             - 判断子序列是否在其中

                content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"                if "前几天去" in content:
                    print('包含敏感字符')
                else:
                    print(content)

              - 移除空白
                    val = " alex "
                    print(val)
                    # new_val = val.strip() # 左右
                    # new_val = val.lstrip()# 左边
                    # new_val = val.rstrip() # 右边
                    # print(new_val)
              - 分割
                    user_info = "alex sb123 9"
                    # v = user_info.split('|')
                    # v = user_info.split('|',1)
                    # v = user_info.rsplit(' ',1)
                    # print(v)
              - 长度(字符)
                    val = "李杰sb"
                    v = len(val)
                    print(v)
              - 索引
                    val = "李杰sb"
                    v = val[0]
                    print(v)

                    val = input('>>>')
                    i = 0
                    while i < len(val):
                        print(val[i])
                        i += 1
              - 切片

                    name = '我叫李杰,性别我今年岁,我在说谎!'
                    print(name[0])
                    print(name[0:2])
                    print(name[5:9])
                    print(name[5:])
                    print(name[5:-2])
                    print(name[-2:])

            d. 列表
                 创建:
                    a = ['alex','狗','eric',123]
                    a = list(['alex','狗','eric',123])

                 in判断:

                    if 'al' in a:
                        pass

                    if 'al' in a[0]:
                        pass

                 索引:
                    val = a[0]

                 长度:
                    val = len(a)

                 切片:
                    a = ['alex','狗','eric',123]
                    v = a[0::2]
                    print(v)

                 追加:
                    a = ['alex','狗','eric',123]
                    a.append('xxoo')
                    print(a)
                 插入:
                    a = ['alex','狗','eric',123]
                    a.insert(0,'牛')
                    print(a)
                 删除:
                    a = ['alex','eric','狗','eric',123]
                    # a.remove('eric')
                    del a[0]
                    print(a)

                更新:
                    a = ['alex','eric','狗','eric',123]
                    a[1] = '阿斯顿发送到'
                    print(a)

                For循环:
                    a = ['alex','eric','狗','eric',123]
                    for item in a:
                        print(item)
                        # break
                        # continue

            e. 字典操作
                - 创建

                    v = {
                        'name': 'alex',
                        'password': '123123'
                    }

                # 常用操作                # 索引获取值
                # n = v['name']
                # print(n)

                # 增加,无,增加;有,修改
                # v['age'] = 19
                # print(v)

                # 删除
                # del v['name']
                # print(v)

                # 循环
                # for item in v.keys():
                #     print(item)
                # for item in v.values():
                #     print(item)
                # for key,val in v.items():
                #     print(key,val)

 

作业代码:

1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 import getpass
 4 
 5 f1 = open('db','r')
 6 data = f1.read()
 7 f1.close()
 8 
 9 print(data)
10 user_info_list = []
11 user_str_list = [i for i in data.split('\n') if i]  # 移除data.split()生成的空元素
12 print("user_str_list is",user_str_list)
13 for item in user_str_list:
14     temp = item.split('|')
15     v = {
16         'name': temp[0],
17         'pwd': temp[1],
18         'times': temp[2]
19     }
20     user_info_list.append(v)
21 user_info_list[1]['times'] = 3
22 
23 
24 over_input = False
25 while True:
26     if over_input:
27         print("Good bye !")
28         break
29     else:
30         user_name = input("请输入用户名: ")
31         for user_info in user_info_list:
32             if user_name.strip() == user_info["name"].strip() and int(user_info["times"]) > 0:
33                 user_password = getpass.getpass("请输入密码: ")
34                 if user_password.strip() == user_info["pwd"]:
35                     user_info["times"] = 3
36                     over_input = True
37                     print("Welcome, 登录成功!")
38                     break
39                 else:
40                     user_info["times"] = int(user_info["times"]) - 1
41                     if int(user_info["times"]) == 0:
42                         print("超出系统设置最大重试次数,账户被锁定!")
43                         over_input = True
44                         break
45                     else:
46                         print("登录失败,请重新登录!")
47                         break
48             else:
49                 print("输入不合法的用户名或该用户账户被锁定!")
50                 over_input = True
51                 break
52 
53 file_user_info = ""
54 for user_info in user_info_list:
55     temp_user_info = "{}|{}|{}\n".format(user_info["name"], user_info["pwd"], user_info["times"])
56     file_user_info += temp_user_info
57 
58 f2 = open('db','w')
59 f2.write(file_user_info)
60 f2.close()