本节内容
- Python介绍
- Python类型
- 安装
- Hello World程序
- Pycham安装
- 变量
- 字符编码
- 注释
- 用户输入
- 格式化输出
- 模块初识
- 表达式if ...else语句
- 表达式for 循环
- break and continue
- 表达式while 循环
1.python介绍
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
目前Python主要应用领域:
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
2.Python 是一门什么样的语言?
编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。
编译和解释的区别是什么?
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)
编译型vs解释型
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
python是解释型
3.python 安装
Windows
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
Linux ,Mac
无需安装,原装Python环境 ps:如果自带2.6,请更新至2.7
4、Hello World程序的两种方法
在windows下执行
1、编辑器里输入,不用编译
print("Hello World!") 直接就可以运行
2、可以存成一个程序再运行
存成一个文本,新建一个.py文件。到cmd中执行
运行脚本 python Hello.py
在linux 下创建一个文件叫hello.py 并输入
print("Hello World!")
执行前需给予 hello.py 执行权限,chmod 755 hello.py
#!/usr/bin/env python print "hello,world"
#!/usr/bin/env python #可写可不写
要是把代码变成一个可执行程序,必须在第一行声明解释器是什么
这个声明有两种写法
#!/usr/bin/env python #第一种写法 #!/usr/bin/python #第二种写法
env是找环境变量 ,到整个系统里找一个叫python的环境变量
第二种是写死了就找/usr/bin/python目录下的文,如果装了3.5,仍然用的是系统原装2.7版本的python不好,不要用这个
5、Pycham安装
进入项目,修改模板【view】——》【Toolbar】
写好程序运行程序,右键【run】
右运行后自动保存
6、变量
什么是变量,用来存东西的,后面要调用的,变量存在内存里,
name = "rainbow"
变量名,给变量赋值
name = "rainbow" print("my name is ",name)
以下代码:运行结果【my name is rainbow rainbow】
name = "rainbow" name2=name
print("my name is ",name,name2)
以下代码运行结果
my name is rainbow rainbow
Paoche ge rainbow
name = "rainbow"
name2=name
print("my name is ",name,name2)
name="Paoche ge"
print(name,name2)
实际name2只是向name问路,自己指向内存地址,而不是指向name
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
变量名要有含义
复杂的变量名用下划线区分,或者驼峰法表示
gf_of_oldboy="Amy"
GfOfOldboy="lala"
如何定义常量呢,不支持常量,但是想表示的话
变量名大写,表示常量
PIE=3.14 #不应该改,但是可以改而已,尽量不改
7、字符编码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
用0和1表示数字,通过1010组合表示
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1
二进制是计算机中能表示的最小单位,
一个二进制位bit
8 4 2 1 的规律,之前所有数字之和加1,也是2的n次方
8bit=1byte字节
1024byte=1kbyte
1024kbyte=1mbyte
1024mbyte=1gb
1024gb=1T
任意数字要用一个bit表示,8个字节表示,
字符编码把二进制和字母转换
ASCII码,最多用8位表示一个字节,8位表示255个符号
关于中文
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
从128到255留给中文等做扩展
GB2312——1980年 (7445个字符)
GBK——1995年 (2W+个字符)
GB18030——2000年 (27484个字符)
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
UTF-8可变长度的英文ASCII码格式
Unicode占2个字节16位、ASCII占1个字节8位、UTF-8中文占3个字节
8、注释
#单行注释
'''
多行注释
1行
2行
3行
4行
5行
6行
7行
8行
'''
#号单行指数
‘’‘多行注释‘’‘ 三个单引号或者三个双引号
msg='''
1、aaaaaaaaaaaa
2、bbbbbbbbbbbb
3、cccccccccccc
4、555555555555 '''
print(msg)
【运行结果】
1、aaaaaaaaaaaa
2、bbbbbbbbbbbb
3、cccccccccccc
4、555555555555
9、用户输入
input用户交互
username=input("输入用户名:")
pwd=input("输入密码:")
print(username,pwd)
输入用户名:阿斯蒂芬
输入密码:asdf
阿斯蒂芬 asdf
10.格式化输出
name=input("name")
age=input("age")
job=input("job")
Salary=input("Salary") info='''
---------Info of '''+ name +'''-------------
Name:'''+ name +'''
Age:'''+ age +'''
job:'''+ job +'''
Salary:'''+ Salary +'''
-------------------------------
'''
print(info)
【运行结果】
name kaka
age 18
job IT
Salary 20000 ---------Info of kaka-------------
Name: kaka
Age: 18
job: IT
Salary: 20000
-------------------------------
另外一种写法
name=input("name")
age=input("age")
job=input("job")
Salary=input("Salary") info='''
---------Info of %s-------------
Name:%s
Age:%s
job:%s
Salary:%s
-------------------------------
'''%(name,name,age,job,Salary)
print(info)
【运行结果】
namenono
age19
jobart
Salary15000 ---------Info of nono-------------
Name:nono
Age:19
job:art
Salary:15000
-------------------------------
%s是占位符,代表string
%d是数字类型,帮助验证输入的数据类型是否正确
%f浮点,可以理解为小数
name=input("name")
age=input("age")
job=input("job")
Salary=input("Salary") info='''
---------Info of %s-------------
Name:%s
Age:%d
job:%s
Salary:%s
-------------------------------
'''%(name,name,age,job,Salary)
print(info)
【运行结果】报错
namebaby
age34
jobshowgirl
Salary30000
Traceback (most recent call last):
File "D:/Python/s014/Day1.py", line 16, in <module>
'''%(name,name,age,job,Salary)
TypeError: %d format: a number is required, not str
调试状态
name=input("name:")
age=input("age:")
#打印一个变量的数据类型
print(type(age))
job=input("job:")
Salary=input("Salary:")
运行结果,默认输入的都是字符串,需要强行转换一下
name:aaaa
age:33
<class 'str'>
job
强制转换,并打印
name=input("name:")
age=int(input("age:"))
#打印一个变量的数据类型
print(type(age),type(str(age))) job=input("job:")
Salary=input("Salary:")
[运行结果]
name:kiwi
age:18
<class 'int'> <class 'str'>
job:
第二种格式输出,格式化拼接
name=input("name:")
age=int(input("age:"))
job=input("job:")
Salary=input("Salary:") info2='''
---------Info of {_name}-------------
Name: {_name}
Age: {_age}
job:{_job}
Salary:{_Salary}
-------------------------------
'''.format(_name=name,
_age=age,
_job=job,
_Salary=Salary
)
print(info2)
【运行结果】
name:nana
age:36
job:IT
Salary:50000 ---------Info of nana-------------
Name: nana
Age: 36
job:IT
Salary:50000
-------------------------------
第三种方式的拼接
name=input("name:")
age=int(input("age:"))
job=input("job:")
Salary=input("Salary:") info3='''
---------Info of {0}-------------
Name: {0}
Age: {1}
job:{2}
Salary:{3}
-------------------------------
'''.format(name,age,job,Salary) print(info3)
【运行结果】
name:pink
age:67
job:study
Salary:12345 ---------Info of pink-------------
Name: pink
Age: 67
job:study
Salary:12345
-------------------------------
11、初识模块
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的。
引用的时候必须把模块导入到程序中
import getpass
2
3
username=input("输入用户名:")
pwd=getpass.getpass("输入密码:")
print(username,pwd)
运行结果不正确,结论是Pycharm中getpass不好用,只能在cmd中执行
表达式if ...else语句
没有大括号,必须有缩进
_name="alex"
_password="abc123" username=input("输入用户名:")
pwd=input("输入用户名:") if _name==username and _password==pwd:
print("Welcome user {name} ,login......".format(name=username))
else:
print("invalid username or paddword!")
【输出结果1】
输入用户名:aa
输入用户名:asdf
invalid username or paddword!
【输出结果2】
输入用户名:alex
输入用户名:abc123
Welcome user alex ,login......
猜年龄小游戏
age_of_old_boy=56 guessage=int(input("guess age:")) if guessage==age_of_old_boy:
print("Yes,you got it!")
elif guessage > age_of_old_boy:
print("Too old")
else:
print("Too young")
【运行结果】
guess age:56
Yes,you got it!
guess age:1
Too young
guess age:59
Too old
while循环
count=0 #添加一个计数器 while True: #永远成立,永远执行
print(count) count+=1 #循环一次自增加1
……
859725
859726
859727
859728
859729
859730
859731
859732
859733
859734
859735
859736
859737
859738
859739
859740
859741
859742
859743
859744
859745
859746
859747
859748
859749
859750
859751
859752
859753
859754
859755
859756
859757
859758
859759
859760
859761
859762
859763
859764
859765
859766
859767
859768
859769
859770
859771
859772
859773
859774
859775
859776
859777
859778
859779
859780
859781
859782
859783
859784
859785
859786
859787
859788
859789
859790
859791
859792
859793
859794
859795
859796
859797
859798
859799
859800
859801
859802
859803
859804
……
循环猜年龄
age_of_old_boy=56 count = 0
while count < 3:
guessage=int(input("guess age:")) if guessage==age_of_old_boy:
print("Yes,you got it!")
break
elif guessage > age_of_old_boy:
print("Too old")
else:
print("Too young")
count += 1 else:
print("too meny times you have try,fuck off...")
guess age:57
Too old
guess age:23
Too young
guess age:99
Too old
too meny times you have try,fuck off...
表达式for循环
for i in range(10):
print("loop:",i)
【运行结果】
loop: 0
loop: 1
loop: 2
loop: 3
loop: 4
loop: 5
loop: 6
loop: 7
loop: 8
loop: 9
以上程序用for的实现
age_of_old_boy=56 for i in range(3):
guessage=int(input("guess age:")) if guessage==age_of_old_boy:
print("Yes,you got it!")
break
elif guessage > age_of_old_boy:
print("Too old")
else:
print("Too young")
else:#正常走完流程的时候执行else,如果上面语句break不执行此句
print("too meny times you have try,fuck off...")
【运行结果一样】
guess age:67
Too old
guess age:33
Too young
guess age:56
Yes,you got it!
【程序】隔一个打一次
#跳着打印,每隔一个打一次
for i in range(0,10,2):#从0开始,到10结束,步长是2
print("loop:",i)
【运行结果】
loop: 0
loop: 2
loop: 4
loop: 6
loop: 8
【打印奇数】
for i in range(1,10,2):#从0开始,到10结束,步长是2
print("loop:",i)
loop: 1
loop: 3
loop: 5
loop: 7
loop: 9
continue、break和exit()
age_of_old_boy=56 count = 0
while count < 3:
guessage=int(input("guess age:")) if guessage==age_of_old_boy:
print("Yes,you got it!")
break
elif guessage > age_of_old_boy:
print("Too old")
else:
print("Too young")
count += 1
if count==3:#询问是否退出,不想退出继续循环
continue_or_not=input("continue play?")
if continue_or_not != 'n':
count=0#清空计数器,重新来过
else:
print("too meny times you have try,fuck off...")
1、continue是结束本次循环跳到下一个循环
#continue的用法
for i in range(0,10):#从0开始,到10结束
if i < 5 :
print("loop:",i)
else:
continue
print("hehe....")#
loop: 0
hehe....
loop: 1
hehe....
loop: 2
hehe....
loop: 3
hehe....
loop: 4
hehe....
程序打上断点都
*******continue是跳出本次循环,继续到下次循环,**********
*******break是结束整个循环***************************
2、break是结束当前循环层
for循环嵌套
for i in range(10):
print("*******外循环次数**********",i)
for j in range(10):
print("....内循环次数....",j)
if j > 5:
break #退出本次循环,而不是外层循环
运行结果
*******外循环次数********** 0
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 1
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 2
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 3
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 4
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 5
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 6
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 7
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 8
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6
*******外循环次数********** 9
....内循环次数.... 0
....内循环次数.... 1
....内循环次数.... 2
....内循环次数.... 3
....内循环次数.... 4
....内循环次数.... 5
....内循环次数.... 6