day 1笔记及作业
参考:https://www.cnblogs.com/alex3714/articles/5465198.html
一、Python及其他编程语言介绍:
1、起源
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
2、类型
- Python是解释型、动态的、强类型定义语言,属于较安全语言。
-
编译型vs解释型
-
编译型
- 优点:
编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
- 缺点:
编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
-
解释型
- 优点:
有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:
每次运行的时候都要解释一遍,性能上不如编译型语言。
-
-
动态语言vs静态语言
- 动态类型语言:
动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
- 静态类型语言:
静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
-
强类型定义语言vs弱类型定义语言
- 强类型定义语言:
一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
- 弱类型定义语言:
一个变量可以赋不同数据类型的值。弱类型定义语言是类型不安全的语言。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
3、因此给出Python的优缺点:
-
先看优点
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
-
再看缺点
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来。(这条缺点可以使用Pypy解释器缓解)
- 代码不能加密,因为Python是解释性语言,它的源码都是以明文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨.
4、Python相关解释器
- CPython(官方)
- IPython
- Pypy(值得一试)
二、变量
-
变量就像是临时存储区,其真正威力在于无需知道它们存储的值就能操作它们
-
变量定义的规则
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
['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']
>>> name = 'alex'
>>> name2 = name
>>> print('my name is',name,name2)
my name is alex alex
>>> name = 'randomdoor'
>>> print(name,name2)
randomdoor alex
>>> PI = 3.14 #取定常量(变量名大写)
三、字符编码
- 对于中文
- ASCII-->
- GB2312(1980)-->
- GBK(1995)-->
- GB18030(2000)
# 这些编码方法是向下兼容的 存一个中文字符需要三个字节
- 对于英文
- ASCII-->
- Unicode-->
- UTF-8
# enlish:1byte zhongwen:3bytes
四、用户交互程序
msg= '''name = 'alex'
name2 = 'randomdoor'
print("my name is ", name2)'''
print(msg)
>>>
name = 'alex'
name2 = 'randomdoor'
print("my name is ", name2)
# '''可以用于注释以及多行引用
- 赋值方法一
name = input("name:")
age = int(input("age:")) #int:string-->interger
print(type(age), type(str(age))) #str:interger-->string
job = input("job:")
salary = input("salary:")
info = '''
-------- info of %s -----
Name:%s
Age:%d
Job:%s
Salary:%s
''' % (name,name,age,job,salary)
# %s 字符串
# %d 数字
# %f 浮点数
>>>
-------- info of randomdoor -----
Name:randomdoor
Age:20
Job:student
Salary:0
- 赋值方法二
info2 = '''
-------- info of {_name} -----
Name:{_name}
Age:{_age}
Job:(_job)
Salary:{_salary}
''' .format(
_name = name,
_age = age
_job = job
_salary = salary)
print(info2)
- 赋值方法三
name = input("name:")
age = int(input("age:")) #int:string-->interger
print(type(age), type(str(age))) #str:interger-->string
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)
- 密码明文
import getpass
username = input("username:")
password = getpass.getpass("password:")
- 最简单的if-else语句
import getpass
_username = 'alex'
_password = 'abc123'
username = input("username:")
password = getpass.getpass("password:")
if username == _username and password == _password:
print("Welcome user {name} login...".format(name = username))
else:
print("Invalid username or password!")
-
猜年龄的无聊游戏
- 版本一
age_oldboy = 56 guess_age = input("guess age") if int(guess_age) == age_of_oldboy: print("yes,you got it") elif int(guess_age) > age_of_oldboy: print("think smaller") else: print("think bigger")- 版本二
count = 0 age_oldboy = 56 while True: if count == 3: break guess_age = input("guess age") if int(guess_age) == age_of_oldboy: print("yes,you got it") break elif int(guess_age) > age_of_oldboy: print("think smaller") else: print("think bigger") count += 1- 版本三
count = 0 age_oldboy = 56 while count <3: guess_age = input("guess age") if int(guess_age) == age_of_oldboy: print("yes,you got it") break elif int(guess_age) > age_of_oldboy: print("think smaller") else: print("think bigger") count += 1 else: print("you have tried too many times..fuck off")- 版本四
count = 0 age_oldboy = 56 while count <3: guess_age = input("guess age") if int(guess_age) == age_of_oldboy: print("yes,you got it") break elif int(guess_age) > age_of_oldboy: 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 else: print("you have tried too many times..fuck off") -
for循环与range方法:
for i in range(0,10,2):
print("loop",i)
>>> loop0
loop2
....
loop8
- continue语句
for i in range(0,10):
if i<3:
print("loop",i)
else:
continue # 跳出本次循环 继续下次循环 break结束整个循环
print("hehe....")
>>> loop 0
hehe...
loop 1
hehe...
loop 2
hehe...
- 循环套循环
for i in range(10):
print('---------',i)
for j in range(10):
print(j)
if j > 5:
break
作业思考:
-
作业1:博客
-
作业2:编写登录接口
-
输入用户名密码
-
认证成功后显示欢迎信息
-
输错三次后锁定
-
-
作业3:多级菜单
-
三级菜单
-
可依次选择进入各子菜单
-
所需知识点:列表、字典
-
流程图

- version1:
user_name = 'gbw'
pass_word = 'abc123' #可以将数据存在字典里
while True:
username = input('username:')
if username != user_name:
print("username does not exist, try again")
else:
for i in range(3):
psword = input('password:')
if psword == pass_word:
print('Welcome!')
break
else:
print('password is wrong, try again')
else:
break



浙公网安备 33010602011771号