(1).目前Python主要应用领域:html
(2).Python在一些公司的应用: java
(1).编译和解释的区别是什么?python
编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机能够直接以机器语言来运行此程序,速度很快; c++
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,因此运行速度是不如编译后的程序运行的快的. 算法
这是由于计算机不能直接认识并执行咱们写的语句,它只能认识机器语言(是二进制的形式)windows
(2).编译型vs解释型python3.x
解释型:浏览器
优势:有良好的平台兼容性,在任何环境中均可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就能够,能够快速部署,不用停机维护。tomcat
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。多线程
(3).Python优缺点
先看优势:
再看缺点:
(4).Python解释器介绍
当咱们编写Python代码时,咱们获得的是一个包含Python代码的以.py
为扩展名的文本文件。要运行代码,就须要Python解释器去执行.py
文件。
因为整个Python语言从规范到解释器都是开源的,因此理论上,只要水平够高,任何人均可以编写Python解释器来执行Python代码(固然难度很大)。事实上,确实存在多种Python解释器。
当咱们从Python官方网站下载并安装好Python 2.7后,咱们就直接得到了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,因此叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的全部代码也都在CPython下执行。
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所加强,可是执行Python代码的功能和CPython是彻底同样的。比如不少国产浏览器虽然外观不一样,但内核其实都是调用了IE。
CPython用>>>
做为提示符,而IPython用In [
序号
]:
做为提示符。
PyPy是另外一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),因此能够显著提升Python代码的执行速度。
绝大部分Python代码均可以在PyPy下运行,可是PyPy和CPython有一些是不一样的,这就致使相同的Python代码在两种解释器下执行可能会有不一样的结果。若是你的代码要放到PyPy下执行,就须要了解PyPy和CPython的不一样点。
Jython是运行在Java平台上的Python解释器,能够直接把Python代码编译成Java字节码执行。
IronPython和Jython相似,只不过IronPython是运行在微软.Net平台上的Python解释器,能够直接把Python代码编译成.Net的字节码。
目前大部分的python的程序都基于py2.7+以上写的,可是要学python的话建议从py3.x开始,而且了解py2.x与py.3.x的区别。并推进py2.x向py3.x的使用!
1):windows安装
1
、下载安装包
https:
/
/
www.python.org
/
downloads
/
2
、安装
默认安装路径:C:\python27
3
、配置环境变量
【右键计算机】
-
-
》【属性】
-
-
》【高级系统设置】
-
-
》【高级】
-
-
》【环境变量】
-
-
》【在第二个内容框中找到 变量名为Path 的一行,双击】
-
-
> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
2):Linux/Mac安装
无需安装,原装Python环境
ps:若是自带
2.7
,请更新至3.x
(1).变量定义的规则:
(2).变量的赋值
(3).编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
显然ASCII码没法将世界上的各类文字和符号所有表示,因此,就须要新出一种能够表明全部字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他再也不使用最少使用2个字节,而是将全部的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
因此,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),若是是以下代码的话:
报错:ascii码没法表示中文
1
2
3
|
#!/usr/bin/env python
print
"你好,世界"
|
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
1
2
3
4
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print
"你好,世界"
|
注意:python3.x默认为utf-8格式,不须要单独为每一个.py文件手动添加。
(4).注释/及其注释的格式
1):注释类型
" 注释"
'''注释'''/""" 注释 """
2):print ("注释、用户输入、格式化输出
name=input('name:')
age = int(input("Age:"))
job = input("Job:")
saraly = input("Saraly:")
info='''
-----------------info of %s ------------------
Name:%s
Age:%d
Job:%s
Saraly:%s
''' % (name,name,age,job,saraly)
print (info)
print ('之后采用这种模式打印格式!!!!:')
info1='''
---------------info1 of {_name}----------------
Name:{_name}
Age:{_age}
Job:{_job}
Saraly:{_saraly}
'''.format(_name=name,_age=age,_job=job,_saraly=saraly)
print (info1)
info2='''
-------------info2 of {0}-----------------
Name:{0}
Age:{1}
Job:{2}
Saraly:{3}
'''.format(name,age,job,saraly)
print (info2)
5
6
7
|
#!/usr/bin/env python
#_*_coding:utf-8_*_
#name = raw_input("What is your name?") #only on python 2.x
name
=
input
(
"What is your name?"
)
print
(
"Hello "
+
name )
|
输入密码时,若是想要不可见,须要利用getpass 模块中的 getpass方法,即:
1
2
3
4
5
6
7
8
9
10
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
getpass
# 将用户输入的内容赋值给 name 变量
pwd = getpass.getpass( "请输入密码:" )
# 打印输入的内容
print
(pwd)
|
例如:if
name
=
=
"alex"
and
pwd
=
=
"cmd"
:
print
(
"欢迎,alex!"
)
else
:
print
(
"用户名和密码错误"
)
(2).if-elif-elif-else
例如:
if
user_input
=
=
my_age:
print
(
"Congratulations, you got it !"
)
elif
user_input < my_age:
print
(
"Oops,think bigger!"
)
else
: #也能够不用else,所有用elif保证条件的准确性,防止不可肯定的因素。
print
(
"think smaller!"
)
*外层变量,能够被内层代码使用
*内层变量,不该被外层代码使用
最简单的循环10次:
for
i
in
range
(
10
):
print
(
"loop:"
, i )
需求一:仍是上面的程序,可是遇到小于5的循环次数就不走了,直接跳入下一次循环
1
2
3
4
|
for
i
in
range
(
10
):
if
i<
5
:
continue
#不往下走了,直接进入下一次loop
print
(
"loop:"
, i )
|
需求二:仍是上面的程序,可是遇到大于5的循环次数就不走了,直接退出
1
2
3
4
|
for
i
in
range
(
10
):
if
i>
5
:
break
#不往下走了,直接跳出整个loop
print
(
"loop:"
, i )
|
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
1
2
3
4
5
|
count
=
0
flag=True
while
True
:
print
(
"你是风儿我是沙,缠缠绵绵到天涯..."
,count)
count
+
=
1
if conut>3:
flag=False
else: #while也能够用else,来表示条件不符合走这个分支!!
print('输入次数过大,请稍后再试!')
break
|
1.编写登录接口
1 #Author:Jame Mei 2 '''第一周的做业:输入用户名密码,认证成功后提示登录成功,输入三次错误后锁定用户。''' 3 4 count = 0 #记录用户输入密码的次数 5 flag = 1 #标志位 6 lock = [] 7 user_pass = [] 8 username = input('please input your name:') 9 10 #读取黑名单的内容 11 f = open('black_mingdan','r') 12 lock_file = f.readlines() 13 f.close() 14 #将黑名单文件内容做为列表元素追加到列表中 15 for i in lock_file: 16 line = i.strip('\n') 17 lock.append(line) 18 19 20 #若输入的用户名在黑名单中,若是在则给出提示信息:用户已经被锁定,请联系管理员。 21 if username in lock: 22 print('User %s Have Been Locked.It is not allow to login,please contact Administrator.' %username) 23 24 else: 25 while True: 26 count += 1 27 passwd = input("please input your password:") 28 f = open('user_information', 'r') 29 user_file = f.readlines() 30 f.close() 31 32 for i in user_file: 33 user_pass = i.strip().split(',') 34 # 判断输入的用户名==user_pass[0] and 密码==user_pass[1],若是相等,则提示欢迎信息并退出循环,若是不相等则 35 # 结束本次循环 36 if username == user_pass[0] and passwd == user_pass[1]: 37 print('welcome user %s login !' % username) 38 flag = True 39 break 40 else: 41 continue 42 43 # 若flag为真,则用户名和密码输入正确跳出整个循环体,反之,若用户输入密码错误的次数为3,则给出提示信息:用户已经被锁定 44 # 并将username追加到黑名单中 45 if flag is True: 46 break 47 else: 48 if count == 3: 49 print('User Have Been try 3 times,Have Been Locked') 50 lock_file = open('black_mingdan', 'a') 51 # lock_file.write('Have Been Locked User:%s\n' %username) 52 lock_file.write('%s\n' % username) 53 lock_file.close() 54 break
#优化版:
1 Author Meijinmeng 2 ''' 3 2.升级需求:login2.py 4 能够支持多个用户登陆 (提示,经过列表存多个帐户信息) 5 用户3次认证失败后,退出程序,再次启动程序尝试登陆时,仍是锁定状态(提示:需把用户锁定的状态存到文件里) 6 ''' 7 account_pwd={ 8 'jame':{'pwd':'123456','count':0}, 9 'alice':{'pwd':'123456','count':0}, 10 'tomcat':{'pwd':'123456','count':0} 11 } 12 while True: 13 account=input("Please your account:").strip() 14 with open('blackdb.txt', 'r') as f: 15 for line in f: #lock_users = f.read().split('|') 用文件查找替换的思路,若是有大量黑名单下面效率可能会高 16 if account == line.strip(): 17 print('%s already locked,Please contact the administrator!' % account) 18 exit(0) 19 20 if account in account_pwd: 21 if account_pwd[account]['count'] > 2: 22 print('Too many input times,locking!') 23 with open('blackdb.txt', 'a+') as f: 24 f.write('%s\n' %account) #f.write('%s|' %account) 用换行的方式每行只写1个有点浪费呀 25 break 26 27 password = input("Please your passord>>>:") 28 if password == account_pwd[account]['pwd']: 29 print("Welcome {_username},login success!".format(_username=account)) 30 break 31 else: 32 print ('Your password error,Please try agin!') 33 account_pwd[account]['count']+=1 34 continue 35 else: 36 print ("Your input account never existed ,please try agin!") 37 continue
2.多级菜单并检测输入次数过多
1 #Author:Jame Mei 2 university_list = { 3 "安徽省": { 4 "合肥": ["中国科技大学", "合肥工业大学"], 5 "蚌埠":["安徽财经大学","蚌埠医学院"], 6 "安庆": ["安庆学院"], 7 "阜阳": ["阜阳学院"] 8 }, 9 "江苏省": { 10 "南京": ["南京大学", "南京工业大学"], 11 "南通": ["南通大学"], 12 "苏州": ["苏州大学"], 13 }, 14 "浙江省": { 15 "杭州": ["浙江大学", "杭州电子科技大学"], 16 "宁波": ["宁波大学"], 17 "嘉兴": ["嘉兴学院"], 18 } 19 } 20 21 22 flag = True # 标记 23 try_province = 0 # 次数设置 24 try_city = 0 25 try_school = 0 26 27 while flag: # while循环语句,即在某种条件下执行某段程序 28 if try_province <3: 29 province_str1 = "欢迎进入沿海省份" 30 print(province_str1.center(20, '-')) # 打印好看一点,处于中心位置 31 32 for province in university_list.keys(): # for in循环遍历,key函数用于判断province是否存在于字典中,如在字典里返回true,不然返回false。 33 print(province) 34 print("----------------------------") 35 province_input = input("请输入省份:") 36 city_flag = True 37 38 while city_flag: 39 if try_city<3: 40 if province_input.strip() in university_list: 41 print("欢迎进入: %s!" % (province_input,)) # 赋值,记得必定要有个逗号 42 province_str2 = "欢迎进入沿海地区" 43 print(province_str2.center(20, '-')) 44 for city in university_list[province_input].keys(): 45 print(city) 46 print("----------------------------") 47 city_input = input("请输入城市名称:") 48 49 school_flag = True 50 while school_flag: 51 if try_school < 3: 52 53 if city_input.strip() in university_list[province_input]: 54 print("欢迎进入:%s!" % (city_input,)) 55 province_str3 = "欢迎进入沿海大学" 56 print(province_str3.center(20, '-')) 57 for school in university_list[province_input][city_input]: 58 print(school) 59 print("----------------------------") 60 school_input = input("请输入大学名称:") 61 62 if school_input.strip() in university_list[province_input][city_input]: 63 print("欢迎进入:%s!" % (school_input,)) 64 print("当前位置:%s--%s--%s " % (province_input, city_input, school_input)) 65 print("哈哈哈,已经结束啦啦啦") 66 flag = False 67 city_flag = False 68 school_flag = False 69 break 70 else: 71 print("您输入的信息有误,请从新输入!") 72 try_school += 1 73 74 75 76 77 else: 78 print("你输入的城市信息有误,请从新输入!") 79 try_city += 1 80 school_flag = False 81 82 83 84 else: 85 print("您输入的次数超过三次了哟,退出!") 86 flag = False 87 city_flag = False # 这边注意遗漏 88 school_flag = False # 这边注意遗漏 89 90 else: 91 print("你输入的信息有误,请从新输入") 92 try_province += 1 93 city_flag = False 94 95 else: 96 print("输入超过又三次了哟!,退出!") 97 flag = False 98 city_flag = False 99 100 else: 101 print("输入超过三次,退出!") 102 flag = False