python 自学之路-Day one
一、Python介绍
创始人吉多范罗苏姆(龟叔),脚本解释程序
应用领域广,数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等。
主要应用领域:
云计算:OpenStack;
WEB开发:经典框架Django
科学运算、人工智能:典型库NumPy,SciPy,Matplotlib,Enthought librarys,pands
系统运维
金融:量化交易,金融分析,擅长策略回测
图像GUI:PyQT,WxPython,Tklnter
解释型语言:平台兼容性,灵活性,速度慢
动态类型语言:不用给任何变量指定数据类型,在第一次赋值的时候就会内部记录下来
强类型定义语言:变量被指定类型后,没有经过强制转换,数据类型就不可能改变
优点:易懂,开发效率高,移植性,扩展性,嵌入性
缺点:速度慢,不能加密,线程不能利用多CPU问题
解释器最广泛的是CPython
声明解释器#!/usr/bin/env python
二、变量:存储东西,为了调用
变量命名规则:第一个不能是数字,变量只能是字母、数字或下划线的组合。关键字不能声明为变量。变量名尽量使用英文单词。
三、字符编码:
发展历程:
ASCII 255 字节——1980 gb2312 7xxx——1995 GBK1.0 2w+——2000 GB18030 27xxx——Unicode 2字节——utf-8 en:一字节,zh:3字节。
Python解释器在加载.py文件中的代码时,会对内容进行编码(默认是ASCII),需要告诉解释器是用什么编码来执行源代码,即加入:# -*- coding: utf-8 -*-
注释:
当行注释:#被注释内容
多行注释:”””被注释内容”””
msg=’’’ ‘’’打印多行,用三个引号把需要打印的内容包含在里面,再赋予一个变量,最后打印变量就可以实现。
四、用户交互
Input()指令
第一种结合多行打印可以实现用户交互,利用字符拼接’’’ + 变量 +’’’
1 # Author: JC 2 3 name = input("name:") 4 5 age = input("age:") 6 7 job = input("job:") 8 9 salary = input("salary:") 10 11 12 info = ''' 13 ----------info of ''' + name + ''' ---------- 14 15 Name:'''+ name + ''' 16 17 Age:'''+ age + ''' 18 19 Job:''' + job + ''' 20 21 Salary:''' + salary 22 23 24 print(info)
第二种方法格式化输出,在需要的位置添加%s,代表为string,当然可以为%d,但代表该位置只能接受数字,在程序后面需加上“%()”括号内的变量一一对应上面占用符,缺少时会报错。
1 # Author: JC 2 3 name = input("name:") 4 5 age = input("age:") 6 7 job = input("job:") 8 9 salary = input("salary:") 10 11 12 info = ''' 13 ---------- info of %s ---------- 14 15 Name:%s 16 17 Age:%s 18 19 Job:%s 20 21 Salary:%s 22 23 ''' %(name ,name,age ,job ,salary ) 24 25 26 print(info)
注意:
在python中默认所有的输入都会是字符串,除非强制转换数据类型
1 age = input("age:") 2 3 print(type(age))
通过type()指令可以查看数据类型,需要转为整型需要加入int()。
在python3中raw_input 和input是一模一样的,前者只在py2中存在。
在py2中input是输入是什么格式,所以就是什么格式,没有加上双引号会被自动默认为变量,系统会自动去寻找变量
第三种格式化输出,.format(),建议使用
1 info = ''' 2 3 ---------- info of {_name} ---------- 4 5 Name:{_name} 6 7 Age:{_age} 8 9 Job:{_job} 10 11 Salary:{_salary} 12 13 '''.format(_name=name , 14 15 _age=age, 16 17 _job=job , 18 19 _salary=salary)
format中还可以使用另一中输出,但同样不建议使用该输出模式,如下
1 info2 = ''' 2 3 ---------- info of {0} ---------- 4 5 Name:{0} 6 7 Age:{1} 8 9 Job:{2} 10 11 Salary:{3} 12 13 '''.format(name ,age,job ,salary)
使用密文密码,调用标准库指令import,getpass是密文的库,但是在PyCharm中会用不了(可能是bug吧。。。),所以需要在编译器使用
1 # Author:JC 2 3 import getpass 4 5 6 7 username = input("username:") 8 9 password = getpass .getpass ("password:") 10 11 12 13 print(username,password)
五、if-else流程判断:
在python中有个特点在if语句中写完会自动强制缩进,在同等级的时候不需要进行缩进,当存在上下级关系的时候进行缩进,如果上下级之间没有进行缩进就会被执行,如果自身就是顶级的时候,就需要顶格写,不然会报错。
1 if _username == username and _password == password: 2 3 print("Welecome user {name} login...".format(name =username )) 4 5 else: 6 7 print("Invlid username or password!") 8 9 print("test")
if-else语句中还有一个elif语句,等同于c语言中的else if
猜年纪小游戏:利用判断语句if-else,根据用户输入的数字进行猜科比的年纪,分别得出三个答案,大于等于和小于。
例:
1 # Author:JC 2 3 kobe = 40 4 5 6 guess_age = int(input("guess age:")) 7 8 9 if guess_age == kobe: 10 11 print("yes,you got it.") 12 13 elif guess_age > kobe: 14 15 print("think smaller...") 16 17 else: 18 19 print("think bigger!") 20
六、While循环语句
基本的一个while语句可以这样实现:会无限进行加一,true可以看成是循环语句中判断条件永远执行下去。
1 count 0 2 3 while True : 4 5 print("count:",count) 6 7 count = count + 1 #count +=1
修改猜年龄游戏:使用while语句,只能猜3次,出现正确答案或者超过3次的时候程序退出,同时超过3次错误打印文字。
例:
1 kobe = 40 2 3 while count < 3: 4 5 guess_age = int (input("guess age:")) 6 7 if guess_age == kobe: 8 9 print("yes,you got it.") 10 11 break 12 13 elif guess_age > kobe: 14 15 print("think smaller...") 16 17 else: 18 19 print("think bigger!") 20 21 count += 1 22 23 else: 24 25 print("sorry..you tryed too many times...")
加入break语句,使得程序在判断正确的时候跳出循环(结束循环),最后一个else是程序循环中条件不成立的情况下执行,while-else搭配,python特殊的地方。和break语句对应还有一个continue语句,是跳出本次循环进行下一次循环。(可以通过设置断点使用debug进行查看程序过程这样更直观)
七、for循环语句:
实现打印0-9十位数
1 for i in range (10): 2 3 print("loop:",i)
等同于下面:第一个是0代表的是开始的数字,中间的10代表10次,第三个1是步长,修改为2的话就是隔两个输出,类推。
1 for i in range (0,10,1): 2 3 print("loop:",i)
通过对for语句来对猜年龄游戏进行优化:
1 kobe = 40 2 3 for i in range(3): 4 5 guess_age = int (input("guess age:")) 6 7 if guess_age == kobe: 8 9 print("yes,you got it.") 10 11 break 12 13 elif guess_age > kobe: 14 15 print("think smaller...") 16 17 else: 18 19 print("think bigger!") 20 21 else: 22 23 print("sorry..you tryed too many times...")
猜年龄豪华玩法:游戏错误3次后进行询问用户是否进行继续,如果用户输入n则退出,否则继续进行
1 # Author: JC 2 3 kobe = 40 4 5 count = 0 6 7 while count < 3: 8 9 guess_age = int (input("guess age:")) 10 11 if guess_age == kobe: 12 13 print("yes,you got it.") 14 15 break 16 17 elif guess_age > kobe: 18 19 print("think smaller...") 20 21 else: 22 23 print("think bigger!") 24 25 count +=1 26 27 if count ==3: 28 29 countine_cofirm = input("do you want to countine?") 30 31 if countine_cofirm != 'n': 32 33 count = 0
习题练习和扩展:
一、编写登陆接口:
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
二、多级菜单
- 三级菜单
- 可依次选择进入各子菜单
- 所需新知识点:列表、字典