Python解释器声明
在前面执行Python文件时,直接用命令python来执行,在linux上运行python时需要声明Python文件用哪个解释器来执行,执行方法跟shell脚本相像 ./first.py。
这里咱们就需要在 .py 文件的行首添加解释器声明了:
#!/usr/bin/python
解释器用来告诉系统,执行这个文件时需要调用哪个解释器。当然了再Linux系统里还要给这个文件执行权限:
chmod 755 hello.py
按规则来,每一个python文件都需要在行首加上解释器声明。
字符编码声明
python解释器在加载 .py文件中的代码时,会对内容进行编码(默认为ascll编码)
ASCII(美国标准信息交换码),因为计算机是有美国人发明的所以他先立的规矩。ASCII编码主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
显然256个符号根本无法满足世界各国的文字需求,这时就有了Unicode编码(万国码),但是Unicode编码有浪费内存的缺点,本着节俭的宗旨UTF-8诞生了。
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…
如果用ascii码显示中文的话会出现报错
#!/usr/bin/python
print("中文")
为了能让Python显示中文我们需要在第二行加上编码声明
#!/usr/bin/python
# -*- coding:utf-8 -*-
print("中文")
声明方式有多中,为了统一习惯我们统一用这一种方法声明。
注释
对内容注释以后,注释后的内容就不会被解释器编译,注释可以用来说明代码和文件的作用,适当的注释能帮助编写程序
单行注释
#注释内容 //在需要注释内容的行首加上一个“#”就可以把内容注释掉
多行注释
多行注释需要用三个单引号或三个双引号把需要注释的内容括起来
'''
需要注释的内容
需要注释的内容
'''
注释的另一个用处输出多行:
注释多行的单引号和双引号不只能注释,还可以用来输出多行
print'''
“The quick brown fox
jumps over the lazy dog”
'''
如果需要注释的内容里面有单引号而且还需要注释多行,那应该怎么办呢?
"""
print('你好,世界')
print'''
My name is duyanqi
sha sha fen bu qingchu
'''
"""
从上面的实例我们知道了,单引号双引号(三个)都可以注释多行。
执行脚本传入参数
Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:
- Python自带的模块
- 业内开发的模块
- 程序员自己开发的模块
Python有大量的内部模块,其中有一个sys模块,sys中sys.argv可以捕获执行python脚本时传入的参数。
调用sys模块:import 模块
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys //调用sys模块,使用命令import
print sys.argv //打印出捕获到的内容
输出结果
# ./hello.py /home/dyq
['./hello.py', '/home/dyq'] //会把所有的参数保存到集合中
pyc文件
执行python代码时,如果导入其他的.py文件
impory first.py
那么会自动生成一个与其同名的.pyc文件,该文件就是python解释器编译之后产生的字节码。
代码经过编译会产生字节码,字节码经过反反编译就能得到源码
变量
声明变量
>>> name='dyq' //等号用来定义变量
>>> print name
dyq
变量名称的要求
- 变量名只能含数字,字母,下划线
- 不能以数字开头
- 不能为pyhon内的关键字(这个不用记,如果有关键字时关键字会报错),关机字包括:
['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']
变量的赋值
>>> name = 'dyq'
>>> name1 = 'wyx'
>>> name1 = 'dyq'
>>> name2 = 'dyq'
输出和输入
输出内容用print即可输出内容
pring("hello,world!")
输入用户名
#!/usr/bin/python
# -*- coding:utf-8 -*-
#Python2的写法
name = raw_input('请输入用户名:')
print name
#Python3的写法
name = input('请输入用户名:')
print ('你好',name)
另一个内置模块:getpass,输入密码时不可见,用法如下
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import getpass \\调用getpass内置模块
pwd = getpass.getpass('请输入密码:') \\直接使用模块输入
print (pwd)
数据的基本类型
- 字符串(str)
定义字符串类型需要用单引号或者双引号括起来
>>> name = 'dyq'
>>> print(type(name)) //type用来显示字符类型
<class 'str'>
- 数字(int)
定义变量为数字时变量名后面直接跟数字,不用引号
>>> name = 123
>>> print (type(name))
<class 'int'>
- 布尔值
布尔值只有True(真),Flash(假)
这个跟linux的shell一样,如果真则输出0,如果假输出1。
if判断语句
格式:
if 条件一:
执行代码块
elif 条件二:
执行代码块
elif 条件三:
执行代码块
else:
执行代码块
判断语句: if … else … ,是判断语句,如果条件成立(为真True)则执行 if 块,否则(else)执行else块,else子句是可选的。
单条件判断:用户登录验证
#!/usr/bin/python
# -*- coding:utf-8 -*-
#提示输入用户名称
#如果用户名或密码错误提示登录失败
#如果用户名密码正确提示登录成功
import getpass
name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if name == 'xiaoming' and pwd == '123':
print ('欢迎',name)
else:
print ('登录失败')
多条件判断:
#登录不同的用户显示不同的权限
#用户 dyq 密码 dyq1 普通用户
#用户 wyx 密码 wyx1 特权用户
#用户 root 密码 root1 管理员用户
import getpass
name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if name == 'dyq' and pwd == 'dyq1':
print('欢迎普通用户',name)
elif name == 'wyx' and pwd == 'wyx1':
print('欢迎特权用户',name)
elif name == 'root' and pwd == 'root1':
print('欢迎管理员',name)
else:
print('请核对用户名密码')
注意:
- 变量使用前一定要声明
- 内置模块使用时在最上面调用一次就行
- 报错后看报错提示
- 每个判断结束后最后都要加上冒号:
- Python严格区分大小写
- Python使用缩进(tbl)保持缩进相同
- 判断语句会用到 “and” “or” “not” 灵活使用
判断语句嵌套
用户输入不同内容显示不同提醒,前提是密码都相同,这只是实验流程。
import getpass
name = input('请输入用户名:')
pwd = getpass.getpass('请输入密码:')
if pwd == '123':
if name == 'dyq':
print('欢迎VIP玩家')
elif name == 'wyx':
print('欢迎超级玩家')
else:
print('用户名不正确')
else:
print('登录失败')
while 循环
格式
while 条件:
代码块
运行流程
while判断条件,如果条件为真(True)则运行代码块,如果代码不为真(Flase)则结束循环,执行下一行。
#!/usr/bin/python
# -*- coding:utf-8 -*-
a = 0
while a<10:
a = a+1
if a == 5:
continue
print(a)
注意:
while 语句要注意缩进格式,while循环会根据代码格式来确定执行到哪。
break:终止所有执行的循环
#!/usr/bin/python
# -*- coding:utf-8 -*-
a = 0
while a == 0:
print(a)
break
print ('ok')
continue 终止当前一次循环
a = 1
while True:
if a == 7:
a = a+1
continue
print (a)
if a == 10:
break
a = a+1
实例:求1-100以内的所有偶数,用百分号 “%”可以求余数
>>> 3 % 2
1
a = 0
b = 0
while True:
b = a%2
if b == 0:
print(a)
if a >= 100:
break
a = a+1
实例:求1-100以内所有的奇数
a = 0
b = 0
while True:
b = a%2
if b == 1:
print(a)
if a >= 100:
break
a = a+1
实例:三次登录
import getpass
a = 0
while 0 <= 2:
name = input("请输入用户名:")
pwd = getpass.getpass("请输入密码:")
if name == "dyq" and pwd == "123":
print("登录成功")
break
elif a == 2:
print("三次机会已用完")
break
else:
a = a + 1
print("请重新登录")
实例:求1-2+3-4+5 … 99的所有数的和
a = 1
b = 0
while a < 100:
c = a%1
if c == 1:
b = a+b
else:
b = a-b
a = a+1
print(b)