python开发系列-第一天

 

Python简介


 

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

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

 

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

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。

 

Pythond VS C#

1. Python跨平台,可以运行在Linux、weindows等平台

2. Pythond开源,C#则相反

3. Python是解释型语言,C#需要编译,所以Python运行要慢点

 

Pythond VS Java

Python更简洁,Java过于庞大复杂,语法很多

 

Python VS C C++ 

Python更容易学习,语法简单易懂,但他们通常扮演不同的角色,Python是一种脚本语言,C和C++通常要和底层硬件打交道

 

Python VS Ruby Perl

与ruby不同,OOP对于Python是可选的,所以Python不会强制用户选择OOP开发

 

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 个符号。

 

 

显然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']

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

 

 

while循环

 

 

基本数据类型


 

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()

 

转载于:https://www.cnblogs.com/xiangyu123/p/6770225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值