一 大纲
2 运算符
3 基本数据类型
整型:int
字符串:str
列表:list
元组:tuple
字典:dic
4 for enumrate xrange range
1、编程语言
2、python、C
#、java
3、python:pypy,cpython,jpython..
4、执行方式
解释器
文件
5、指定解释器
python xxx.py
.
/xxx
.py
#!/usr/bin/env python
6、ascii unicode utf-8
7、
2.7
# -*- coding:utf-8 -*-
3.x 默认utf-8
8、变量,代指
变量名 = 值
变量名要求:
a.数字字母下划线
b.数字不能开头
c.不能和py关键字重复
a =
"alex"
b = a
9、条件
if
条件,
elif
条件,
else
10、
while
while
条件,
从上到下执行一次
(判断条件是否真)从上到下执行一次
(判断条件是否真)从上到下执行一次
(判断条件是否真)从上到下执行一次
(判断条件是否真)从上到下执行一次
二 前天作业讲解:
知识点:
判断奇偶:除以2取模
1 % 2 3%2=1 3 2%2=0 4 4%2=0
详细见 url http://www.cnblogs.com/liujianzuo888/articles/5440915.html
三 编码转换
unicode 可以编译成 UTF-U GBK
即
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'Administrator' a='刘建佐' #默认是utf-8 a_unicod=a.decode('utf-8') # decode是解码成unicode 括号是脚本内容的默认编码 即:将脚本内容的utf-8解码成unicode a_gbk=a_unicod.encode('gbk') #encode是编码,将unicode的编码内容编码成指定的,这里是gbk print(a_gbk) #用于终端打印
#print(u"刘建佐") #3里面是字符串 2里面是unicode
# 3版本直接将utf-8编码成GBK 不需要先转成unicode了,因为3没有了
E:\py_test\s2_py>python3 test.py Traceback (most recent call last): File "test.py", line 6, in a_unicod=a.decode('utf-8') # decode是解码成unicode 括号是脚本内容的默认编码 即:将脚本内容的utf-8解码成unicode AttributeError: 'str' object has no attribute 'decode'
四 pycharm 安装 配置
file-setings-editor- file && file encode template 输入
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'liujianzuo'
五 pycharm 快捷键
ctrl+/ 批量注释
shift+方向键 选中
shift+tab 向左tab
六 运算符
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算: 面向对象讲解
运算符
名称
说明
例子
+
加
两个对象相加
3 + 5得到8。'a' + 'b'得到'ab'。
-
减
得到负数或是一个数减去另一个数
-5.2得到一个负数。50 - 24得到26。
*
乘
两个数相乘或是返回一个被重复若干次的字符串
2 * 3得到6。'la' * 3得到'lalala'。
**
幂
返回x的y次幂
3 ** 4得到81(即3 * 3 * 3 * 3)
/
除
x除以y
4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
//
取整除
返回商的整数部分
4 // 3.0得到1.0
%
取模
返回除法的余数
8%3得到2。-25.5%2.25得到1.5
> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。&
按位与
数的按位与
5 & 3得到1。
|
按位或
数的按位或
5 | 3得到7。
^
按位异或
数的按位异或
5 ^ 3得到6
~
按位翻转
x的按位翻转是-(x+1)
~5得到-6。
大于
返回x是否大于y
5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
= y返回True。
==
等于
比较对象是否相等
x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。
!=
不等于
比较两个对象是否不相等
x = 2; y = 3; x != y返回True。
not
布尔“非”
如果x为True,返回False。如果x为False,它返回True。
x = True; not x返回False。
and
布尔“与”
如果x为False,x and y返回False,否则它返回y的计算值。
x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。
or
布尔“或”
如果x是True,它返回True,否则它返回y的计算值。
x = True; y = False; x or y返回True。短路计算在这里也适用。
练习

>>> 3>2 True >>> 3>> 3>=2 True >>> 3!=2 True >>> print "数字变成2进制" 数字变成2进制 >>> 5> 5>>2 1 >>> 5 | 3 7 >>> 5 & 3 1
1 2 3 4 5 6 7 8 1 2 4 8 16 32 64 128 数组5转二进制 5=1+4 1 0 1 所以是5就是00000101 左移两位 5>> a = range(10) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> d=tuple(a) >>> d (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) list(元组)元组变列表 >>> d (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) >>> e = list(a) >>> e [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度

示例:
#!/usr/bin/env python# _*_ coding:utf-8 _*___author__ = 'liujianzuo'dic={1:2,"alex":4,4:9}print(dic.get("alex"))print(dic.items())print(dic.keys())print(dic.values())print(dic.pop(2,None))print(dic.setdefault("name","rain"))
###################### 字典 ################### # 字典的每一个元素,键值对 user_info = { 0: "alex", "age": 73, 2: 'M' } # 0 “alex" # 1 73 # 索引 # print(user_info[0]) # print(user_info["age"]) # 循环,默认值输出key # for i in user_info: # print(i) # # 获取所有键 # print(user_info.keys()) # # 获取所有值 # print(user_info.values()) # # 获取所有键值对 # print(user_info.items()) # for i in user_info.keys(): # print(i) # # for i in user_info.values(): # print(i) # user_info = { # 0: "alex", # "age": 73, # 2: 'M' # } # for k,v in user_info.items(): # print(k) # print(v) # clear,清除所有内容 # user_info.clear() # print(user_info) # get 根据key获取值,如果key不存在,可以指定一个默认值 # val = user_info.get('age') # print(val) # val = user_info.get('age', '123') # print(val) # 索引取值时,key不存在,报错 # print(user_info['age']) # print(user_info['age1111']) # has_key 检查字典中指定key是否存在 3版本python没有了 可以用in 判断 # ret = 'agfffe' in user_info.keys() # print(ret) # pop # popitem # update # print(user_info) # test = { # "a1": 123, # 'a2': 456 # } # user_info.update(test) # print(user_info) # 删除指定索引的键值对 test = { "a1": 123, 'a2': 456 } del test['a1'] print(test)
PS:循环,range,continue 和 break
字典练习


八 for 循环
li = [11,22,33] for i in li: print(li.index(i),i)
九 enumrate
创建 序列号
li = [11,22,33] for k,v in enumerate(li, 1): print(k,v)
十 range 和xrange
print range(1, 10) # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9] print range(1, 10, 2) # 结果:[1, 3, 5, 7, 9] print range(30, 0, -2) # 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]例如 :
print(range(1,10)) 输出 range(1, 10) 而不是1 2 3.。。10
range用法: stop不匹配 range(start,stop,sep) 比如 range(1,10,2) 打印1 3 5 7 9 range(10,1,-1) 10 9 8 7 ... 2
练习题
1、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
功能要求:
- 要求用户输入总资产,例如:2000
- 显示商品列表,让用户根据序号选择商品,加入购物车
- 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
- 附加:可充值、某商品移除购物车
goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ]
dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"], } "河南": { ... } "山西": { ... } }
答案:
1
#!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'liujianzuo' list_a=[11,22,33,44,55,66,77,88,99,111] dic = { "k1":[],"k2":[]} for i in list_a: if i len(shop_list): print("\033[31;1m物品不存在\033[0m") continue del_list = int(del_list) for i in goods: if shop_list[del_list - 1] == i["name"]: salary += i["price"] print( "\033[35;1m移除了商品:%s 返回现金:%s 元,目前余额:%s 元\033[0m" % (shop_list[del_list - 1], i["price"], salary)) del shop_list[del_list - 1] break elif chose.isdigit() != True: print("\033[31;1m输入必须是数字~~~\033[0m") continue chose = int(chose) if chose > len(goods): print("\033[31;1m你选择的商品不存在!!\033[0m") continue if goods[chose - 1]["price"] len(chinamap[sheng][shi]): 79 print("\033[31;1m选择不存在\033[0m") 80 continue 81 else: 82 xian=int(xian) 83 chose.append(chinamap[sheng][shi][xian-1]) 84 break 85 break 86 break 87 if len(chose) < 1: 88 print("\033[35;1m你什么也没选~~!!\033[0m") 89 else: 90 print("\033[35;1m你选择的省:%s 市是:%s 县是:%s\033[0m"%(chose[0],chose[1],chose[2]))
知识点
字典keys 转换为 list
#!/usr/bin/env python# _*_ coding:utf-8 _*___author__ = 'liujianzuo'chinamap = { "山东省":{ "济南":["市中区","历下区","天桥区","槐荫区","历城区","长清区","章丘市","平阴县","济阳县","商河县","其他"], "青岛":["市南区","市北区","城阳区","四方区","李沧区","黄岛区","崂山区","胶南市","胶州市","平度市","莱西市","即墨市","其他"] }, "北京市":{ "北京":["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","门头沟区","密云县","延庆县","其他"], }, "广东省":{ "广州":["越秀区","荔湾区","海珠区","天河区","白云区","黄埔区","番禺区","花都区","南沙区","萝岗区","增城市","从化市","其他"], "深圳":["福田区","罗湖区","南山区","宝安区","龙岗区","盐田区","其他"] }, "河北省":{ "邯郸":[ "成安县","磁县","大名县","肥乡县","馆陶县","广平县","邯郸市","邯郸县","鸡泽县","临漳县","邱县","曲周县","涉县","魏县","武安市","永年县" ], "衡水":[ "安平县","阜城县","故城县","衡水市","冀州市","景县","饶阳县","深州市","武强县","武邑县","枣强县" ], "石家庄":[ "高邑县","晋州市","井陉县","灵寿县","鹿泉市","平山县","深泽县","石家庄市","无极县","辛集市","新乐市","行唐县","元氏县","赞皇县","赵县","正定县","藁城市","栾城县" ] }}# n = list(chinamap.keys())#print(n)# m = list(chinamap[n[0]].keys())# print(m)# print(n[0])# print(m[0])# print(chinamap[n[0]][m[0]])# exit()chose=[]def zero(): print("\033[31;1m选择不能为空,清重新输入~~\033[0m")def crre(): print("\033[31;1m你的选择不正确,清重新输入~~\033[0m")print("\033[32;1m省列表如下:\033[0m\033[0m")# for key in chinamap.keys():# print(key)n = list(chinamap.keys())n1 = []shi_list=[]xian_list=[]for k,i in enumerate(n,1): print(k,i) n1.append(i)# print("=================",n1)while True: sheng=input("\033[33;1m请输入省,quit for leave:\033[0m").strip() if len(sheng) == 0: zero() continue elif sheng == 'quit': break elif sheng.isdigit() != True: print("\033[31;1m请选择一个数字~~~\033[0m") continue elif int(sheng)-1 >= len(n): print("\033[31;1m选择不存在 out of range\033[0m") continue else: sheng=int(sheng) chose.append(n1[sheng-1]) print("\033[35;1m你进入省:%s \033[0m"%(chose[0])) #print(chose) print("\033[32;1m市列表如下:\033[0m") shi_dic_list = list(chinamap[n1[sheng-1]]) #print(shi_dic_list) for k,v in enumerate(shi_dic_list,1): print(k,v) shi_list.append(v) # print("=============",shi_list) while True: shi=input("\033[33;1m请输入市:quit for leave:\033[0m").strip() if len(shi) == 0: zero() elif shi == 'quit': print("\033[35;1m你选择的省:%s \033[0m" % (chose[0])) exit() # elif shi not in chinamap[sheng].keys(): # crre() elif shi.isdigit() != True: print("\033[31;1m请选择一个数字~~~\033[0m") continue elif int(shi) -1 >= len(shi_dic_list): print("\033[31;1m选择不存在 out of range\033[0m") continue else: shi=int(shi) chose.append(shi_list[shi-1]) print("\033[35;1m你进入省:%s 市是:%s \033[0m"%(chose[0],chose[1])) # print(chose) # exit() print("\033[32;1m县区列表如下:\033[0m") for key_xian in enumerate(chinamap[n1[sheng-1]][shi_list[shi-1]],1): print(key_xian[0],key_xian[1]) xian_list.append(key_xian[1]) while True: xian=input("\033[33;1m请输入县序号,quti for leave:\033[0m").strip() if len(xian) == 0: zero() elif xian == 'quit': print("\033[35;1m你选择的省:%s 市是:%s \033[0m"%(chose[0],chose[1])) exit() elif xian.isdigit() != True: print("\033[31;1m必须是 数字\033[0m") continue elif int(xian) > len(chinamap[n1[sheng-1]][shi_list[shi-1]]): print("\033[31;1m选择不存在 out of range\033[0m") continue else: xian=int(xian) chose.append(xian_list[xian-1]) break break breakif len(chose) < 1: print("\033[35;1m你什么也没选~~!!\033[0m")else: print("\033[35;1m你选择的省:%s 市是:%s 县是:%s\033[0m"%(chose[0],chose[1],chose[2]))
输出截图