本文内容
1. 为什么要学python?
2. python是一种什么语言?
3. python安装过程
4. 第一个程序之helloworld
5. 变量
6. 用户输入
7. 格式化输出
8. 表达式 if else
9. 表达式while loop
10. 表达式for loop
11. break和continue
一、为什么要学python
随着人工智能的火爆发展,python也迎来了使用量的激增。最新的TIOBE排行榜如下图所示:
python不仅用于人工智能,还应用于数据分析、网络编程、图像处理、数值计算。学习Python,是快速跻身互联网行业的一种途径。
二、 python是一种什么语言?
python是一种动态、强类型、解释性语言
动态和静态:
(1)动态:指程序运行期间进行数据类型检查的语言。定义变量的时候不需要进行数据类型定义,赋值即可。python、matlab都是动态语言。
(2)静态:程序在编译期间进行数据类型检查,写程序时必须定义好数据类型。c/c++、java、c#都是静态语言。
强类型和弱类型:
(1)强类型:强制数据类型定义的语言。一个变量被定义为一种数据类型,不经过强制类型转换,那么它就一直是这种数据类型。强类型语言是一种类型安全的语言。
(2)弱类型:数据类型可以被忽略,一个变量可以赋值不同数据类型的值。不是类型安全的语言。
强类型语言速度略逊于弱类型语言,但是安全性远远高于弱类型语言,更加严谨。
解释型和编译型:
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。
(1)编译:程序先经过编译器,生成相应的可执行代码,然后再经过链接程序,生成可执行文件。
(2)解释:我的理解是一边进行编译,一边执行,由解释器进行这些操作。
编译型语言速度快,但是移植性差,需要环境配置。
解释型语言速度慢,但是可移植性强。
java很好的折衷了这两种特点,Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候则由JVM(Java的虚拟机平台,可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点,又已经完成了对源代码的大部分预编译工作,所以执行起来比“纯解释型”程序要快许多。“一次编译,到处执行”。
三、 python安装过程
四、第一个程序之helloworld
1 # -*- coding:utf-8 -*- 2 #py2中打中文的方法,需要声明上一句话 3 name = "你好,世界" 4 print(name) 5 print("Hello World!")#就这一句话就可以了!
上面是在pycharm中运行,如果想在交互界面运行,在dos下python目录下输入python,新一行出现>>>,表明进入交互界面,可以直接输入python命令。
打印hello world:
或者先编写好py文件再执行:
注意保存时后缀必须为py
五、变量
变量名:gf_of_oldboy 、GFOfOldboy,命名时用下划线或者大写字母区分。一般大写就表示常量。
字符编码的发展历程:ASCII 255 1bytes---->gb2312 7000+ ----> GBK1.0 2w+ ----> GBK18030 27000+
unicode 2bytes ----> utf-8 English:1byte hanzi:3bytes
变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
[‘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‘]
1 name = "Feng" 2 name2 = name 3 print("My name is",name,name2)
不用定义数据类型,直接写就可以,真的方便。注意:Feng也可以用‘‘单引号。
注释:单行注释用#,多行注释用‘‘‘ xxx ‘‘‘ """ xxx"""
打印单行输出:逗号不打印,用于连接。字符串用双引号括起来,变量直接写。单引号里面的特殊字符不打印,双引号里面特殊字符(单引号)打印。
print("My name is",name,name2)
打印多行输出:变量=‘‘‘ xxx ‘‘‘,打印此变量。
1 msg = ‘‘‘ 2 print(name,name2) 3 ‘‘‘ 4 print(msg) 5 6 msg1 = "i‘m feng" 7 print(msg1)
打印结果:
print(name,name2)
i‘m feng
六、 用户输入
input命令。
1 name = input("name:") 2 age = int(input("age:")) 3 print(type(age),type(str(age))) 4 job = input("job:") 5 salary = input("salary:")
PS:输入的变量默认为str(字符串型),如果需要别的类型需要进行强制类型转换,如第二行。
输入用户名和密码,判断是否正确。
1 _username = ‘feng‘ 2 _password = ‘abc123‘ 3 username = input("username:") 4 password = input("password:") 5 if _username == username and _password == password: 6 print("Welcome user {name} login...".format(name=username)) 7 else: 8 print("Error!") 9 10 print(username,password)
附加密码不可见的功能。加入注释内容即可。
1 import getpass 2 _username = ‘feng‘ 3 _password = ‘abc123‘ 4 username = input("username:") 5 password = input("password:") 6 #password = getpass.getpass("password:") 7 #密码不是明文 但是不能在这运行 在dos可以运行 8 if _username == username and _password == password: 9 print("Welcome user {name} login...".format(name=username)) 10 else: 11 print("Error!") 12 13 print(username,password)
七、 格式化输出
有四种格式化输出的方法:
第一种是‘‘‘+xxx+‘‘‘
第二种是%s %d %f 后面%(XXX,XXX,XXX) XXX是变量
第四种是{数字} 后面.FORMAT(XXX,XX,XXX)
例子:
1 #强制类型转换( 默认输入就是字符串 ) 打印变量%s %d %f 2 #格式化输出 1、‘‘‘+ name +‘‘‘ 不用这个 开辟多块内存 2、%s替代符 %(xx,xx,xxxx) 3、 .format 3 name = input("name:") 4 age = int(input("age:")) 5 print(type(age),type(str(age))) 6 job = input("job:") 7 salary = input("salary:") 8 #第一种格式化输出的方法 9 info = ‘‘‘ 10 ----------- info of ‘‘‘+name + ‘‘‘ ------- 11 Name:‘‘‘+name + ‘‘‘ 12 Age:‘‘‘+age + ‘‘‘ 13 Jod:‘‘‘+job + ‘‘‘ 14 Salary:‘‘‘+salary + ‘‘‘ 15 16 ‘‘‘ 17 #第二种格式化输出的方法 18 info = ‘‘‘ 19 ----------- info of %s ------- 20 Name:%s 21 Age:%d 22 Jod:%s 23 Salary:%s 24 ‘‘‘%(name,name,age,job,salary) 25 26 #第三种格式化输出的方法 建议这种! 27 info2 = ‘‘‘ 28 ----------- info of {_name} ------- 29 Name:{_name} 30 Age:{_age} 31 Jod:{_job} 32 Salary:{_salary} 33 ‘‘‘.format(_name=name, 34 _age=age, 35 _job=job, 36 _salary=salary) 37 #第四种格式化输出的方法 38 info3 = ‘‘‘ 39 ----------- info of {0} ------- 40 Name:{0} 41 Age:{1} 42 Jod:{2} 43 Salary:{3} 44 ‘‘‘.format(name,name,age,job,salary) 45 print(info2)
八、 表达式 if else
1、用户登录验证
设置好用户和密码,用户输入用户名和密码。对,欢迎;错,错误。
1 import getpass 2 _username = ‘feng‘ 3 _password = ‘abc123‘ 4 username = input("username:") 5 password = input("password:") 6 #password = getpass.getpass("password:") 7 #密码不是明文 但是不能在这运行 在dos可以运行 8 if _username == username and _password == password: 9 print("Welcome user {name} login...".format(name=username)) 10 else: 11 print("Error!") 12 13 print(username,password)
注意:if 条件输入完以后要加:,else、while、for同样。
2、猜年龄游戏
设定一个年龄,用户输入猜测的年龄。猜对了,对;猜大了,告诉用户猜大了;猜小了,告诉用户猜小了。
1 age_of_oldboy = 56 2 guess_age = int(input("guess age:")) 3 if guess_age == age_of_oldboy: 4 print("yes,you get it.") 5 elif guess_age > age_of_oldboy: 6 print("think smaller!") 7 else: 8 print("think bigger!")
注意,输入数字,要进行强制类型转换,将输入的字符串转换成数字。(看似输入的是数字,其实在py中是字符串)
九、表达式while loop
将猜年龄游戏加入循环,只能猜三次,猜对了用break退出程序;三次都猜错了也退出程序。
1 age_of_oldboy = 56 2 count = 0 3 while count<3: 4 guess_age = int(input("guess age:")) 5 if guess_age == age_of_oldboy: 6 print("yes,you get it.") 7 break 8 elif guess_age > age_of_oldboy: 9 print("think smaller!") 10 else: 11 print("think bigger!") 12 count+=1 13 else: # not if count ==3: 14 print("You have tried too many times..fuck off") 15 #while 1st 16 #count = 0 17 # while count 18 # if count==3: 19 # break
注释中是实现程序的另外的方法,比较笨,现在的代码是优化后的,用一个大的else就可以,所以说while也可以与else结合?
再改进下这个猜年龄游戏,改成猜对了就跳出;猜错了询问用户是否继续,继续随便输入一个字符即可,不继续输入n,终止程序。
1 age_of_hu=56 2 3 count=0 4 while count<3: 5 guess_age = int(input("guess_age:")) 6 if age_of_hu==guess_age: 7 print("yes") 8 break 9 elif age_of_hu>guess_age: 10 print("think smaller") 11 else : 12 print("thinnk bigger") 13 count+=1 14 if count==3: 15 guess_confirm=input("Do you want to keeping guessing?:") 16 if guess_confirm!=‘n‘: 17 count=0
死循环:能一直运行的循环
1 count=0 2 while True: 3 print("yes",count) 4 count+=1
循环一百次:
1 count=0 2 while True: 3 print("count:",count) 4 count=count+1 #count +=1 5 if count == 1000: 6 break
十、表达式for loop
1 for i in range(10): 2 print("loop:", i )
输出:
1 loop: 0 2 loop: 1 3 loop: 2 4 loop: 3 5 loop: 4 6 loop: 5 7 loop: 6 8 loop: 7 9 loop: 8 10 loop: 9
还是猜年龄的例子,用for循环实现。猜三次,对,跳出;三次都错,退出程序。
1 age_of_oldboy = 56 2 for i in range(3): 3 guess_age = int(input("guess age:")) 4 if guess_age == age_of_oldboy: 5 print("yes,you get it.") 6 break 7 elif guess_age > age_of_oldboy: 8 print("think smaller!") 9 else: 10 print("think bigger!") 11 else:#上面代码正常执行完才执行下面 12 print("You have tried too many times..fuck off")
十一、break和continue
break和continue:
continue :跳出本次循环,进行下次循环。
break :结束本次循环, 如果是嵌套,跳出第一层循环。
例1:
1 count=0 2 while True: 3 print("count:",count) 4 count=count+1 #count +=1 5 if count == 1000: 6 break
例2:
1 for i in range(0,10): 2 if i<5: 3 print("loop",i) 4 else: 5 continue 6 print("hehe...")
输出:
loop 0 hehe... loop 1 hehe... loop 2 hehe... loop 3 hehe... loop 4 hehe...
用continue:设置断点进行调试的时候,发现i=6以后还会进行i=7一直到i=9,但是不打印后面的hehe。
用break:设置断点进行调试的时候,发现i=6以后程序直接终止。
例3:
1 for i in range(10): 2 3 print(‘------------‘,i) 4 for j in range(10): 5 print(j) 6 if j>5: 7 break #跳出j循环 不跳出i循环
输出:
------------ 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