参考文档
http://www.cnblogs.com/alex3714/articles/5465198.html
# 介绍python历史及应用场景以及发展趋势
第一个小程序
注意格式|括号和引号
print('Hello world!')
变量
*为了存东西,方便后边调用|格式:变量名='变量'|注意:在shell中定义变量不能加空格
*变量的定义是有规则的:
(1)变量名只能是 字母、数字、下划线
(2)变量名的第一个字符不能是数字
(3)以下关键字不能声明为变量名
['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']
#例子
常量的定义|大写就代表着常量
PIE = 3
print(PIE)
name = 'xia minjie'
print('My name is :', name)
'''
My name is : xia minjie
'''
# ','将同时打印的多个数据区分开
# 变量赋值
name = 'xia minjie'
name1 = name
print('My name is ', name, name1)
name = 'Deng chuhan'
print(name, name1)
# what is the value of the name1 now
#此处注意变量指向
'''
My name is xia minjie xia minjie
Deng chuhan xia minjie
'''
字符编码
#python3字符集默认支持中文
#'utf-8': en:1bytes | zh:3bytes
用户输入
username = input('username:')
password = input('passwd:')
age = input('Age:')
'''
print(type(age))
input 默认格式是str
只有字符串才能相加,int型不能被想加
'''
job = input('Job:')
salary = input('Salary:')
print(username, password)
# 格式化字符串拼接|忘记拼接(占内存)
info1 = '''
----------info1 of ''' + username + '''----------
Name:''' + username + '''
Age:''' + age + '''
Job:''' + job + '''
Salary:''' + salary + '''
'''
print(info1)
# 格式化%s输出
info2 = '''
----------info2 of %s----------
Name:%s
Age:%s
Job:%s
Salary:%s
''' % (username, username, age, job, salary)
print(info2)
# format模式
info3 = '''
----------info3 of {name1}----------
Name:{name2}
Age:{young}
Job:{wa}
Salary:{too}
'''.format(name1=username, name2=username, young=age, wa=job, too=salary)
print(info3)
输入密码密文:getpass模块
import getpass
username = input('username:')
password = getpass.getpass('password:')
# 在cmd中测试|pycharm中不好用
判断账户密码是否正确
import getpass
__username = 'xia minjie'
__password = 'xiamin0099'
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!')
#IndentationError 表示缩进错误
while实现猜数字
#输入三次之后,询问是否继续猜
age_of_xiaminjie = 21
count = 0
while count < 3:
guess_age = int(input('guess age:')) # 字符串和int无法比较|所以必须强制转换
if guess_age == age_of_xiaminjie:
print('Yes ,you got it!')
break
elif guess_age > age_of_xiaminjie:
print('think amaller!')
else:
print('think bigger!')
count += 1
if count == 3:
ask = input(" 'c' continute else quit: ")
if ask == 'c':
count = 0
else:
exit(0)
#continue与break
[break] #结束整个循环
[continue] #跳出本次循环,进行下次循环
for i in range(0, 10):
if i < 3:
print('loop', i)
else:
continue
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
#总共执行60次|大循环一次,小循环6次
生成.pyc文件
http://www.cnblogs.com/alex3714/articles/5465198.html
.pyc是个什么鬼?
里面储存的是预编译后的字节码
#简述Python的运行过程
[在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。]
数据类型初识
(1)数字
2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
(2)布尔值
真(True)或假(False)
1 或 0
(3)字符串
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化输出
name = 'xia minjie'
print('你好:%s'%name)
'''
你好:xia minjie
'''
PS: 字符串是 %s;整数 %d;浮点数%f
字符串常用功能:
移除空白
分割
长度
索引
切片
进制
二进制,01
八进制,01234567
十进制,0123456789
十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
计算机内存地址和为什么用16进制?
为什么用16进制
1、计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示)
2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便
3、计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好
4、为了统一规范,CPU、内存、硬盘我们看到都是采用的16进制计算
16进制用在哪里
1、网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。
2、数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式
3、一些常用值的定义,比如:我们经常用到的html中color表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。
bytes
msg = '我是小江'
print(msg)
print(msg.encode('utf-8'))
print(msg.encode('utf-8').decode(encoding='utf-8'))
----------
我是小江
b'\xe6\x88\x91\xe6\x98\xaf\xe5\xb0\x8f\xe6\xb1\x9f'
我是小江
----------
作业一:编写登陆接口
·输入用户名密码
·认证成功后显示欢迎信息
·输错三次后锁定
import getpass
username_list = ['xia minjie', 'deng chuhan', 'jiang shuying']
password_list = ['xiamin0099', 'dengchu0099', 'jiangshu0099']
username_list_dely = []
count = 0
while count < 3:
username = input('username:')
password = getpass.getpass('password:')
print(username)
while username in username_list:
addr = username_list.index(username)
if password == password_list[addr]:
print('Yes,%s has login successfully!!' % username)
break
else:
print('Password error!!!')
break
else:
print('%s not exit!!!' % username)
count += 1
if count == 3 and username in username_list:
username_list_dely = username_list_dely.append(username)
print('deny to login:', username_list_dely)
exit(0)
作业二:多级菜单
·三级菜单
·可依次选择进入各级子菜单
·所需新知识点:[列表]、[字典]