Python擅长的领域
- web开发
- DjangopyramidTornadoBottleFlaskWebPy
- 网络编程
- TwistedsRequestsScrapyParamiko
- 科学技术
- SciPyPandaslpython
- GUI图形开发
- wxPythonPyQTKivy
- 运维自动化
- OpenStackSaltStackAnsible腾讯蓝鲸
二进制编码
- ASSICII码 每个字符统一需要8个bit来储存
计算机容量
- 1位=1bit
- 8bit=1byte=1字节
- 1024bytes=1kbytes=1KB
- 1024KB=1MillionBytes =1MB=1兆
- 1024MB=1Gigabytes
- 1024GB=1TB
-024TB=1PB
编程语言
- 编程语言就是一套与计算机交互的语法规则。学习编程就相当于学习语法规则。
- C语言是操作系统的开发语言
- C++是C语言的加强版
- Java虚拟机,支持跨平台
- PHP纯web开发语言
- Python刚开始被作为脚本语言
- C#即C sharpe
- ruby跟Python相似
- perl语言,在Unix上开发的语言,做文字处理
- shell脚本语言,简单易学,基于Unix、Linux,做简单的系统管理任务,运维人员必学
- erlang函数式编程,面向并发的编程语言
- go开源编程语言
- JavaScript最广泛的语言,主要写前端的语言
- nodejs后端语言,全栈式的语言
- vb微软的脚本语言,bat脚本
- lua是nginx脚本语言
语言类型
- 编译型
- 全部翻译,再执行,翻译即编译,此类型的有C、C++等
- 解释型
- 边执行边翻译,此类型的语言有Python、PHP、Java、C#、Perl、Ruby、JavaScript
Python版本选择
- python2.x
- 默认编码为ASSIC,不支持中文
- python3.x
- 默认编码为UNICODE,默认支持中文
- 不兼容python2.x
- 核心语法调整,更易学
- 新特性默认值在3.x上有
- unicode 万国码,支持所有国家和地区。向下兼容GB2312、GBK
- UTF—8是unicode的拓展集,可变长的字符编码集
- 支持中文的第一张表——GB2312
当使用Python2.x在Windows的cmd运行代码时,如果有中文,将会出现乱码。因为Windows使用的是GBK编码,所以要在代码前声明使用哪种编码。在代码前面加上#!-*- coding:utf-8 -*-
。除此之外,在输出变量时,还要在变量前加上u
即声明使用unicode编码。
例:
#!-*- coding:utf-8 -*-
print u"我是坏坏!"
环境变量
此电脑–>属性–>高级系统设置–>环境变量–>系统变量–>找到Path变量,编辑。在环境变量后面加上Python的安装路径,每个路径之后用;
隔开。修改后保存。
- D:Program FilesPython35Scripts;
- D:ProgramFilesPython35;
- D:Program FilesPython27
执行py程序方式
- 交互器,缺点程序不能永久保存,主要用与简单的语法测试相关
- 文件执行
变量
- 为了存储程序运算过程中的一些中间结果,为了方便日后调用
- 命名规则
- 要具有描述性
- 变量名只能_,数字,字母组成,不可以是空格或特殊字符(#?<.,¥$*!~)
- 不能以中文为变量名
- 不能以数字开头
- 保留字符是不能被使用
- student_number //python官方推荐命名规则
- studentNumber //驼峰体,微软程序用的较多
常量
- 不变的量。如pie = 3.141592653…
- 在Python里面所有的变量都是可变的
- 用全部大写的变量名来代表此变量为常量
Python中没有常量,所有的量都是可以改变的
变量重新赋值
我们先来看一个列子
name = "bad"
name2 = name
print(name,name2)
name = "jay"
print(name)
print(name2)
那么上面的程序,在重新给name赋值以后,name2的值会不会也发上变化呢?
其实是不会的。在给name赋值的时候,相当于是划分了一块地方,叫bad。而name指向bad,name2通过name找到bad,也指向bad。
当重新给name赋值时,只是新划了一块地方,叫jay,name指向jay,而name2还是指向bad不变。
运行结果:
bad bad
jay
bad
内存释放
内存,即上面划分bad、jay的地方。那么如果一直定义变量,内存使用完了怎么办?这就需要将内存释放。
在Python中,不需要专门去释放内存,当定义的值不被变量指向,就会自动释放内存。取消指向有两种方法,一种是删除变量;一种是重新指向新的值。
- del name
>>> name="bad"
>>> name
'bad'
>>> del name
>>> name
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
name
NameError: name 'name' is not defined
为了方便理解,定义的变量就像是一个门牌号。而内存就是一栋大楼。定义的值就是大楼中的小房间。定义变量时,就是把门牌号挂到指定的房间门上。当不需要再使用这个房间的时候,我们可以使用两种方法释放这房间。
del name
即直接把门牌号拆下来,然后楼管(Python的内存回收机制)就会把房间回收了name = "jay"
即把门牌号拆下来,装到别的房间去
注释
- 对代码进行说明或是不执行哪一段代码时,需要使用到注释。
- 注释分类:
#
单行注释,也可以放在代码后,作为代码说明'''
多行注释,可以使用三个单引号或者三个双引号,将需要注释的多行内容引起来
用户输入
例:用户输入名字和年龄,打印出名字和年龄。
name = input("your name:") #将输入的数据赋值给name
age = input("your age:") #将输入的数据赋值给age
print(name,age) #输出变量name,age
运行结果:
your name:bad
your age:20
bad 20
例:用户输入姓名和年龄,打印出用户的姓名以及还能活多久。
death_age = 80 #定义一个变量为80
name = input("your name:") #输入用户姓名
age = input("your age:") #输入用户年龄
print(type(age))
print("Your name:",name) #打印出用户姓名
print("You can still live for:",death_age-int(age),"year") #不使用int()将会报错
# 将三个字符串拼接
print("You can still live for:"+ str(death_age-int(age)) +"year") #不使用str()将会报错
- 所有带单引号,双引号的都为字符串
int
整数(insteger),str
字符串(string)+
为拼接符- input接受的所有数据都是字符串,即便输入的是数字,也依旧会被转换为字符串处理
- 最后打印时,
death_age
是整数型,age
是字符串,无法进行加减运算,所以要对age
的数据类型进行转换int(age)
是将字符串类型的age
转换为整数型,同理str()
可以将整数型转换为字符串类型print(type(age))
是打印出变量的类型- 可能遇到以下报错
- TypeError: unsupported operand type(s) for -: ‘int’ and ‘str’ #不支持
int'
与str'
的-
运算,这因为没有将age
转换为整数型- TypeError: can only concatenate str (not “int”) to str #只能将字符串连接到字符串,这是因为我们将字符串与数字进行了拼接
运行结果:
your name:bad
your age:20
<class 'str'>
Your name: bad
You can still live for: 60 year
You can still live for:60year
if语句
例:定义一个数字,用户输入猜的数字,猜对了则输出"Yes,You are Right",猜错了则输出"Sorry,You are Warning"
my_num = 20
guess_num = int( input("请输入您猜的的年龄:") )
#伪代码,仅提供思路
'''
if guess_num == my_num then
print("Yes")
else
print("No")
'''
if guess_num == my_num:
print("Yes,You are Right!")
else:
print("Sorry,You are Warning!")
- 伪代码并不是真正的代码,仅提供思路
- 程序中判断值是否相等用
==
if
一行代码结束后后需要添加:
,else
之后相同- 可能会出现的报错:
IndentationError: expected an indented block
缩进错误,期待一个缩进块。这里是因为没有缩进,所以报错。SyntaxError: invalid syntax
语法错误。if:else:
是连用的,不能分开IndentationError: unindent does not match any outer indentation level
缩进错误,非缩进不匹配任何外部缩进级别。使用了tab或四个空格,但是其他缩进使用的不是tab或四个空格。
Tab是不等于四个空格的,在notpad++里选择视图–>显示符号–>显示空格与制表符,就可以看到Tab(即制表符)和空格是不同的。缩进可以不用输入四个空格,只要所有的缩进保持一致,都是一个空格或者多个,都可以。但是不建议,建议使用Python官方推荐的使用四个空格。
运行结果:
请输入您猜的的年龄:20
Yes,You are Right
请输入您猜的的年龄:30
Sorry,You are Warning!
例:用户输入一个成绩,90以上输出A,80-90输出B,60-80输出C,60一下输出不及格!
score = int( input("请输入你的成绩:") )
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 60:
print("C")
else:
print("不及格!")
- Python只匹配一个选项,匹配到之后,就不会再继续向下匹配
练习:
- 编写登录入口
- 输入用户名、密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
可以先自己尝试动手写一下,写出自己的思路。这里的代码可能不是最简的,有更好的可以留言指出。
user_name_true = "jay"
user_password_true = "1234"
for i in range(3):
user_name_input = input("请输入你的用户名:").strip()
user_password_input = input("请输入你的密码:")
if user_name_input != user_name_true or user_password_input != user_password_true:
if i >= 2:
print("The account!")
break
else:
print("Try again!You have ",2-i, "chance!")
i += 1
else:
print("Welcom!")
break
运行结果1:
请输入你的用户名:jay
请输入你的密码:111
Try again!You have 2 chance!
请输入你的用户名:aaa
请输入你的密码:1234
Try again!You have 1 chance!
请输入你的用户名:jay
请输入你的密码:1234
Welcom!
运行结果2:
请输入你的用户名:jay
请输入你的密码:111
Try again!You have 2 chance!
请输入你的用户名:bad
请输入你的密码:1234
Try again!You have 1 chance!
请输入你的用户名:bad
请输入你的密码:111
The account!
- 还有个要求是在账户锁定之后,无法再进行登录。再次运行代码也依旧无法再进行登录,输出The account!有能力的可以自己尝试一下实现这个要求。
- 提示是可以将锁定的账户写入到文件中。奈何我还是个小白,也没能实现,只能读取文件内容,写内容到文件中去,属实有些为难我了。
- 提供的思路是将锁定的用户写入文件,在输入用户名之后,先判断这个用户是否在文件中。自己可以多加尝试。
以上内容均属原创,如有不详或错误,敬请指出。