一、编程语言主要从以下几个角度分类:
1、编译型和解释型
2、静态语言和动态语言
3、强类型定义语言和弱类型定义语言 编译型:程序运行前先由负责翻译的程序将代码转换成可执行代码进行执行。例如C/C++、Pascal/Delphi、VB。其优点为运行速度快,对系统要求低,适用于开发操作系统、大型应用程序、数据库系统等。
解释型:程序运行时每直行到一条指令就由解释程序将所执行到的代码转换成可执行代码进行执行,如此反复,直至程序直行完毕。例如Java、JavaScript、VBScript、Perl、Python。适用于网页脚本、服务器脚本及辅助开发接口这样对速度要求不高,但对不同系统平台间的兼容性有一定要求的程序。
静态语言:即静态类型语言,在写程序时要声明所有变量的数据类型,数据类型会在编译期间进行检查。例如C/C++
动态语言:即动态类型语言,在写程序时不用给任何变量指定数据类型,在运行期间才去做数据类型检查。例如Python、Ruby
强类型定义语言:即强制数据类型定义的语言,一旦一个变量被指定了一个数据类型,如果不经过强制转换,那么它永远就是这个数据类型了。
弱类型定义语言:即数据类型可以被忽略的语言,一个变量可以赋不同类型的值。 Python是动态语言、强类型定义语言(类型安全的语言)
VBScript是动态语言、弱类型定义语言(类型不安全的语言)
Java是静态语言、强类型定义语言(类型安全的语言) 二、Python:解释型语言、动态语言、强类型定义语言
优点如下:
1、优雅、明确、简单易懂
2、开发效率高,有强大的第三方库
3、高级语言,无需考虑内存一类的底层细节
4、可移植性强,可以兼容多平台
5、可扩展性强,可以在python中使用其他程序,例如C/C++
6、可嵌入性强,可以将python脚本嵌入到其他程序,例如C/C++
缺点如下:
1、运行速度比编译型语言慢
2、源码以明文形式存放,不能加密
3、线程不能利用多CPU python解释器有:
1、CPython,用C语言开发的,使用最广泛的
2、IPython,基于CPython开发的
3、PyPy,另一种解释器,可以提高代码的执行速度。
4、JPython,用Java开发的
5、IronPython,用C#开发的 Linux中,第一行用“#!/usr/bin/env python”,找python环境变量
系统自带的环境变量在/usr/bin/,后装的环境变量在/usr/local/bin/。 三、变量:
name = “Alex Li”
name2 = name
name = “PaoChe Ge”
print(name,name2)
以上代码中,name2被赋值的是name所指向的内存地址,因此name的赋值发生改变,name2不会发生改变。 四、变量定义规则:
1、变量名只能是字母、下划线、数字的组合
2、变量名第一个字符不能是数字
3、不能用关键字作为变量名
4、3.X中可以用中文作为变量名,但不建议这样做。 五、字符编码:
python3.X默认使用UTF-8。
python2.X默认使用ASCII码,需要使用 # -*- coding:utf-8 -*- 来声明使用的字符集后,方可使用中文。 六、注释方法:
1、单行注释:#
2、多行注释:''''''或者"""""",常用单引号
另,单引号或双引号还可以打印多行,例如:
msg = '''
name = “Alex Li”
name2 = name
name = “PaoChe Ge”
'''
print (msg) 七、用户输入:
1、intput输入的值,默认为字符串类型。
input()
例1:
name = input("what`s your name?") 八、格式化输出:
name = qj
age = 30
job = it
salary = 6000 例1:字符串拼接方法,不建议,因为会在内存中开辟多块内存空间。
info = '''
---------- info of ''' + name + ''' ---------
Name:''' + name + '''
Age:''' + age + '''
job:''' + job + '''
Salary:''' + salary 例2:使用%s、%d、%f占位
info = '''
---------- info of %s ---------
Name:%s
Age:%d
job:%s
Salary:%d
''' % (name,name,age,job,salary)
print(info)
%s:代表字符串
%d:代表整数(需强制相关变量为整数类型)
%f:代表浮点即小数(需强制相关变量为浮点类型)
打印变量类型:print(type(变量名))
强制转换变量类型为整形:age = int(input(age))
强制转换变量类型为字符串:age = str(input(age)) 例3:使用{}占位(官方建议使用此方式)
info = '''
---------- info of {_name} ---------
Name:{_name}
Age:{_age}
job:{_job}
Salary:{_salary}
''' .format(_name = name,_age = age,_job = job,_salary = salary)
print(info) 例4:使用{}占位,花括号中不指定参数
info = '''
---------- info of {0} ---------
Name:{0}
Age:{1}
job:{2}
Salary:{3}
''' .format(name,age,job,salary)
print(info) 九、初识模块
1、使用模块前需先导入
例:
import XXXX
2、实现输入为密文模块 getpass()
例:
import getpass
password = getpass.getpass("password") 十、判断
1、python中if语句的子语句必须要缩进,因为python中if语句没有开始和结束标志符
2、if主语句必须以冒号结尾
3、所有的顶级代码必须顶格写
例1:
import getpass
username = input("username:")
password = getpass.getpass("password:")
_username = qj
_password = 123
if username == _username and password == _password:
print("welcome user {name} login....".format(name=name))
else:
print("invalid username or password!")
例2:猜年龄游戏
age_of_oldboy = 56
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
十一、循环
1、while
count = 0
while true:
print("count:",count)
count = count +1 #count +=1
例1:
count = 0
age_of_oldboy = 56
while true:
if count == 3
break
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
例2:
count = 0
age_of_oldboy = 56
while count < 3:
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
else:
print ("you have tried too many times...fuck off")
例3:
count = 0
age_of_oldboy = 56
while count < 3:
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
count +=1
if count == 3:
countine_confirm = input("do you want to keep guessing..?")
if countine_confirm != "n":
count = 0 2、for
i初始为0,每完成一次循环i值自增1
for i in range(10): # 等同于for i in range(0,10,1):
print("loop:",i)
例1:设置步长
i从0开始到9结束,每次自增2
for i in range(0,10,2)
print("loop:",i)
例2:
age_of_oldboy = 56
guess_age = int(input("guess age:"))
for i in range(3):
guess_age = int(input("guess age:"))
if age_of_oldboy == guess_age:
print("yes,you got it!")
break
elif age_of_oldboy < guess_age:
print("think smaller....")
else:
print("think bigger....")
else:
print ("you have tried too many times...fuck off") 3、break和continue
break:退出当前整个循环
continue:跳出本次循环,进行下一次循环
例1:
for i in range(0,10)
if i < 5:
print("loop:",i)
else:
continue
print ("hehe.....")
例2:
for i in range(10):
print(“---------”,i)
for j in range(10):
print(j)
if j > 5:
break 十二、作业:
1、编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
 #!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:Victor Qu
'''
需求:
1、允许用户注册
检测用户名是否存在
2、允许用户登录
输入用户名密码
检测用户名是否存在
认证成功后显示欢迎信息
输错三次后锁定
'''
import os def register ():
"""
在user.data中添加用户
:return:
"""
logo = "用户注册".center(20,"*")
print(logo)
username = input("请输入用户名:")
with open("user.data","r+",encoding="utf-8") as f:
for line in f:
user_data = line.strip().split(":")
if user_data[0] == username:
print("用户名{_username}已存在。".format(_username=username))
return
else:
passwd_time1 = input("请输入密码:")
passwd_time2 = input("请再次输入密码:")
if passwd_time1 == passwd_time2:
f.write("\n{_username}:{_password}:user:True".format(_username=username, _password=passwd_time2))
print("恭喜您,用户{_username}已注册完成。".format(_username=username).center(10, "*"))
return True
else:
print("输入的密码不一致")
return def login ():
"""
验证用户登录信息,密码输错三次则锁定
:return:
"""
logo = "用户登录".center(20,"*")
print(logo)
username = input("请输入用户名:")
with open("user.data","r+",encoding="utf-8") as f:
for line in f:
user_data = line.strip().split(":")
if user_data[0] == username:
break
else:
print("用户{_username}不存在,请注册。".format(_username = username))
return with open("user.data","r+",encoding="utf-8") as f,open("~user.data","w",encoding="utf-8") as f0:
for line in f:
user_data = line.strip().split(":")
if user_data[0] == username:
if user_data[3] == "True":
for i in range(3):
passwd = input("请输入密码:")
if user_data[1] == passwd:
print("恭喜,用户{_username}登录成功。".format(_username = username))
return True
else:
print("密码输错次数过多,用户{_username}已锁定。".format(_username = username))
f0.write(line.replace("True","False"))
continue
else:
print("用户{_username}已被锁定。".format(_username = username))
f0.write(line)
os.remove("user.data")
os.rename("~user.data","user.data") def main():
while True:
print("欢迎使用用户登录/注册系统".center(20,"*"))
li = ("1、登录","2、注册","3、退出")
for line in li:
print(line)
choice = input("请您选择:")
if choice == "":
ret = login()
if ret:
exit()
elif choice == "":
register()
elif choice == "":
print("谢谢,再见")
exit()
else:
print("您的选择错误,请重新选择") main()
2、多级菜单
三级菜单
可一次选择进入各子菜单
所需新知识点:列表、字典
 #!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:Victor Qu
'''
需求:
1、三级菜单
2、可一次选择进入各子菜单
3、可选择返回上一菜单
4、可选择返回主菜单
5、可选择退出
''' DICT_OF_MEMU = {
"中国":{
"浙江省":{
"杭州市":["上城区","下城区"],
"宁波市":["海曙区","江东区"],
},
"江苏省":{
"南京市":["鼓楼区","玄武区"],
"镇江市":["京口区","丹徒区"],
}
},
"美国":{
"俄亥俄州":{
"城市0":["第零区","第一区"],
"城市1":["第二区","第三区"],
},
"加利福尼亚州":{
"城市2":["第四区","第五区"],
"城市3":["第六区","第七区"],
}
}
} CHS = ["","",""] while True:
if CHS[1] == "":
print("MENU".center(20, "*"))
for country in DICT_OF_MEMU:
print(country)
chice = input("请输入:\n"
"X=退出")
if chice == "x" or chice == "X":
exit("谢谢使用,再见!")
elif chice in DICT_OF_MEMU:
CHS[0] = chice
else:
print("您的输入错误,请重新输入。")
continue while True:
print(CHS[0].center(20, "*"))
for province in DICT_OF_MEMU[CHS[0]]:
print(province)
chice = input("请输入:\n"
"X=退出 B=上级菜单 M=主菜单")
if chice == "x" or chice == "X":
exit("谢谢使用,再见!")
elif chice == "b" or chice == "B":
CHS[1] = ""
break
elif chice == "m" or chice == "M":
CHS[1] = ""
break
elif chice in DICT_OF_MEMU[CHS[0]]:
CHS[1] = chice
break
else:
print("您的输入错误,请重新输入。")
continue if CHS[1] != "":
while True:
print(CHS[1].center(20, "*"))
for city in DICT_OF_MEMU[CHS[0]][CHS[1]]:
print(city)
chice = input("请输入:\n"
"X=退出 B=上级菜单 M=主菜单")
if chice == "x" or chice == "X":
exit("谢谢使用,再见!")
elif chice == "b" or chice == "B":
break
elif chice == "m" or chice == "M":
CHS[1] = ""
break
elif chice in DICT_OF_MEMU[CHS[0]][CHS[1]]:
CHS[2] = chice
print(CHS[2].center(20, "*"))
for district in DICT_OF_MEMU[CHS[0]][CHS[1]][CHS[2]]:
print(district)
exit()
else:
print("您的输入错误,请重新输入。")
continue

python3学习笔记(0)的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  3. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  4. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  5. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

  6. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  7. boost 学习笔记 0: 安装环境

    boost 学习笔记 0: 安装环境 最完整的教程 http://einverne.github.io/post/2015/12/boost-learning-note-0.html Linux 自动 ...

  8. JavaScript学习笔记[0]

    JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...

  9. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  10. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

随机推荐

  1. Pycharm小技巧--使用正则进行查找和批量替换

    分享一个Pycharm中使用正则的分组匹配来进行批量替换的小技巧 例如,我现在需要把HTML文件中的静态文件得到路径全部替换为django模板引用路径的格式 修改为类似这样的格式: {% static ...

  2. MyServer

    //一.设置一个8089端口的本地IP服务器 1 package myserver; import java.io.IOException; import java.net.ServerSocket; ...

  3. Pyhton编程(四)之基本数据类型-字符串详解

    一:字符串是什么? 字符串是Python最常用的一种数据类型,虽然看似简单,但能够以不同的方式来使用它们. 字符串就是一系列的字符,在Python中,用引号括起来的都是字符串,其中的引号可以是单引号, ...

  4. 【Win 10 应用开发】在代码中加载文本资源

    记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...

  5. 【ASP.NET MVC 学习笔记】- 01 理解MVC模式

    本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...

  6. 数据库.MongoDB.安装MongoDB数据库

    树莓派安装方法 版本: mongodb 2.4.10 sudo apt-get install mongodb -y 安装完成后,检查命令 mongo 看到下图的内容,表示已安装并启动成功 ===== ...

  7. 基于ElementUI的网站换主题的一些思考与实现

    前言 web应用程序,切换主题,给其换肤,是一个比较常见的需求. 如何能快速的切换主题色?(只有固定的一种皮肤) 如果又想把主题色切换为以前的呢?(有多种可切换的皮肤) 该以何种方式编写标签的css属 ...

  8. highcharts框架使用总结

    Highcharts官网地址:https://www.hcharts.cn/products/highcharts首先需要引入jQuery框架,然后包含Highcharts框架需要使用到的js文件,最 ...

  9. js实现一个简单钟表动画(javascript+html5 canvas)

    第一次在博客园注册发博.有一次去人家单位开标,看到开标网站上有个钟表动画,一时兴起,就写了个简单的钟表动画. 用js和html5 canvas对象实现一个简单钟表程序 主要用到的就是h5的canvas ...

  10. 2017上海QCon之旅总结(中)

    本来这个公众号的交流消息中间件相关的技术的.上周去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,原计划分上下两篇总结 ...