python笔记二
一 运算符
1算术运算+ - * / % ** //其中%为取余,**为取幂如2**10=1024 9//4=2
需要注意的是python2.7中如9/2=4 需要正确表示,则在开头添加
from __future__ import division 而python3中不需要9/2=4.5
2比较运算符 == != <> > < >= <=
3赋值运算= += -= *= /= %= **= //=
如a*=c 等同a=a*c a**=c等同 a=a**c
4罗辑运算
与and 或or 非not
5成员运算
in not in
s = "the school"
ret = "sc" in s
print(ret)
显示为True
二 python的数据类型
数字( int)字符(str) 列表 (list)字典(dict)元组( tuple)
元组和列表的最大区别是,元组不能修改,列表可以修改
一查看数据类型里的哪些方法
1 help(int)
help(str)
help(list)
help(dict)
help(tuple)
2 通过PyCharm编写程序按信ctrl鼠标点上去加鼠标左键,点击如下
3 快速注释 ctrl + /(选中所需要注释的行按ctrl加 / ,再按一遍就快速去掉注释)
数字类型(int)
如s = 3
ret = s + 2与ret=s.__add__(2)等值
"""
3二进制0000 0011 最少用2位表示,所以输出结果为2
"""
s = 3
print(s.bit_length())
bit_length()
============================================================================
字符类型(str)
移除空白
str1 = " hello "
ret = str1.strip()
print(str1)
print(ret)
注lstrip为右边空白, rstrip为左边并肯strip括号里可以输入字符
如str1.strip("*")
分割字符
str1 = " hello nihao wang "
ret = str1.split()
print(str1)
print(ret)
运行结果
hello nihao wang
['hello', 'nihao', 'wang']
取字符长度len()
str1 = " hello nihao wang "
print(len(str1))
字符串查找
ret=str1.find("hel")
print(ret)找到返回1,没有找到返回-1
分割
str1 = " hello nihao wang "
ret =str1.split("o")
print(ret)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
[' hell', ' niha', ' wang ']
字符串连接
str1 = "hello"
ret ="#".join(str1)
print(ret)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
h#e#l#l#o
替换replace
str1 = "hello"
ret ="#".join(str1)
print(ret)
ret1=ret.replace("#"," ")
print(ret1)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
h#e#l#l#o
h e l l o
最原始的字符串连接方式:str1 + str2
python 新字符串连接语法:str1, str2
奇怪的字符串方式:str1 str2
% 连接字符串:‘name:%s; sex: ' % ('tom', 'male')
字符串列表连接:str.join(some_list
==========================================================================================================================
列表类型list
增加
name_list=["Robert","Rose","Merry","Hanny"]
name_list.append("wang")
print(name_list)
运行结果
['Robert', 'Rose', 'Merry', 'Hanny', 'wang'] 插入insert()
name_list=["Robert","Rose","Merry","Hanny"]
name_list.insert(name_list.index("Rose"),"tt")
print(name_list)
运行结果
['Robert', 'tt', 'Rose', 'Merry', 'Hanny']
其中index是索引确定位置
删除
name_list=["Robert","Rose","Merry","Hanny"]
name_list.remove("Merry")
print(name_list)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
['Robert', 'Rose', 'Hanny']
计数
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=name_list.count("Robert")
print(ret)
运行结果
2
移除并赋值
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=name_list.pop()
print(ret)
print(name_list)
运行结果
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe H:/python17/s1.py
Robert
['Robert', 'Rose', 'Merry', 'Hanny']
排序
name_list=["Robert","Rose","Merry","Hanny","Robert"]
name_list.sort()
print(name_list)
运行结果
['Hanny', 'Merry', 'Robert', 'Robert', 'Rose']
包含in
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret="Robert" in name_list
print(ret)
运行结果
True 长度len()
name_list=["Robert","Rose","Merry","Hanny","Robert"]
ret=len(name_list)
print(ret)
运行结果
5 循环
name_list=["Robert","Rose","Merry","Hanny","Robert"]
for ret in name_list:
print(ret)
运行结果
Robert
Rose
Merry
Hanny
Robert
===================================================================================
元组(tuple)
由于无法修改只有两个
count()
name_tuple=("Robert","Rose","Merry","Hanny","Robert")
ret=name_tuple.count("Robert")
print(ret)
运行结果
2
index()
name_tuple=("Robert","Rose","Merry","Hanny","Robert")
ret=name_tuple.index("Robert",1,5)
print(ret)
运行结果
4
同样支持for循环
=========================================================================================================
字典dict
更新update()
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.update({"name":"east"})
print(person_dict)
运行结果
{'sex': 'M', 'name': 'east', 'age': 18}
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.update({"school":"east"})
print(person_dict)
运行结果
{'age': 18, 'school': 'east', 'name': 'Robert', 'sex': 'M'}
结论,如果对应的有键值对,则修改,没有则增加
删除键值
person_dict={"name":"Robert","sex":"M","age":18}
person_dict.pop("name")
print(person_dict)
运行结果
{'sex': 'M', 'age': 18} for循环
person_dict={"name":"Robert","sex":"M","age":18}
for ret in person_dict :
print(ret)
运行结果
age
sex
name
取值get()
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict.get("name"))
运行结果
Robert
取值
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict.values())
print(person_dict.keys())
运行结果
<class 'dict_values'>
dict_keys(['sex', 'age', 'name'])
pop获取并在字典中删除
person_dict={"name":"Robert","sex":"M","age":18}
print(person_dict)
ret=person_dict.pop("name")
print(ret)
print(person_dict)
运行结果
{'sex': 'M', 'name': 'Robert', 'age': 18}
Robert
{'sex': 'M', 'age': 18}
=========================================================================
其它
enumrate对迭大的对像加上序号
li=["笔记本","电脑","U盘"]
for k,v in enumerate(li,1):
print(k,v)
ret= input("choose:")
print(li[int(ret)-1])
运行结果
1 笔记本
2 电脑
3 U盘
choose:2
电脑
for i in range(1,5):
print(i)
运行结果
1
2
3
4
for i in range(5,1,-1):
print(i)
运行结果
5
4
3
2
========================================= 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
#/usr/bin/env python3
li=[11,22,33,44,55,77,88,99,90,23]
dic={"k1":[],"k2":[]}
for i in li:
if i > 66:
dic["k1"].append(i)
elif i < 66:
dic["k2"].append(i)
print(dic)
===============================================================
#!/usr/bin/env python3
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} s=' '.join(li)
t=s.split()
print(li)
for i in t:
if i[0] == "a" or i[0] =="A" and i[len(i)-1] =="c" :
print(i)
print("===============================================")
print(tu)
m=' '.join(tu)
n=m.split()
for i in n:
if i[0] == "a" or i[0] == "A" and i[len(i)-1]=="c" :
print(i)
print("===============================================")
print(dic)
t1=[]
for m1 in dic.values():
t1.append(m1)
print(t1)
m2=' '.join(t1)
n1=m2.split()
for i1 in n1 :
if i1[0] == "a" or i1[0]=="A" and i1[len(i1)-1]=="c":
print(i1)
print("=================================================")
#!/usr/bin/env python3
li = ["手机", "电脑", '鼠标垫', '游艇']
for k,v in enumerate(li,1):
print(k,v) while True :
i = input("请输入商品:")
if i.isnumeric():
if int(i) > 0 and int(i) < 5 :
print(li[int(i)-1])
break
else:
print("pleae input again")
else:
print("please input again")
采购清单程序
#!/usr/bin/env python3
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
{"name": "bus", "price": 10000},
{"name": "house","price":80000}
]
lism = [] #商品名
lisn = [] #商品价格
buy_lis=[]#所购买的清单
cai=["采购物品","修改清单","结算","充值","退出"] def goods_look(list1,list2): #查看可购买的商品清单,价格
flag=True
num=0
print("序号 商品名称 单价")
while flag:
if num < len(list1):
print(num+1," ",list1[num],' ',list2[num])
else:
break
num = num+1
#####################################################
def buy_look(s): #查看购买物品清单
i = 0
print("序号 商品名称 单价 数量 金额")
while i < len(s):
for t in s[i]:
t = s[i]
for l in t.keys():
print(i+1,' \t',l,' \t',t[l][0],' \t',t[l][1],' \t',t[l][2])
i = i + 1
##################################################### def buy_goods(s): #查看购买物品
print(" 商品名 单价 数量 金额")
for i in s.keys():
if s[i][1] != 0 :
print(i.center(10), ' ', str(s[i][0]).center(5), ' ', str(s[i][1]).center(3), ' ',
str(s[i][2]).center(5))
##############################################################
def buy_sum(n):#求购买物品清单总额
sum=0
i=0
while i < len(n) :
for j in n[i].keys() :
m = n[i][j][2]
sum = sum + int(m)
i=i+1
return sum
################################################################
# def init_buy(s_dict,m_list,n_list):
# flag=0
# for n1 in m_list:
# buy.setdefault(n1,[n_list[flag],0,0])
# flag += 1
#################################################################
def buy_list(buy_goods,m_list,n_list,m,n):
#加入购特车m代表商品序号,n代表数量 m_list商品单,n_list代表商品价格,buy_goods为数组
sum=n_list[m]*n
buy_goods.append({m_list[m]:[n_list[m],n,sum,]})
################################################################
def list_m(s):
lism1=[]
for i in s:
lism1.append(i.get('name'))
return lism1
def list_n(s):
lisn1=[]
for i in s:
lisn1.append(i.get('price'))
return lisn1
def buy_act(list_m,list_n,s):
#购买商口行为 list_m为商口名称,list_n为单价,s为输入金额
flag2=True
while flag2:
goods_look(list_m,list_n)
s1 = input("请输入商品序号:")
s2 = input("请选择购买数量:")
m = int(s1) - 1
n = int(s2)
buy_list(buy_lis, lism, lisn, m, n)
buy_look(buy_lis)
# sum1 = buy_sum(buy_lis)
# print("你共计消费总额:", sum1, "还余:", s-sum1)
# if sum1 < s:
flag1 = input("是否需要继续购买Y/N:")
if flag1 == 'Y':
flag2 = True
else:
flag2 = False
# else:
# s1 = input("请充值:")
# s += int(s1)
def buy_cz(s):
s1 = input("请充值:")
s = int(s1)+s
return s
#======================================
def buy_remove(s): #移除不需要的商品
print("您已选购如下商品")
while True:
buy_look(s)
flag_y = input("请是否需要删除不需要的商品y/n")
if flag_y == 'y' and len(s):
c = input("请选择所购买的商品序号:")
buy_lis.remove(s[int(c) - 1]) else:
break
#================================================================
def buy_end(lis,s): #结算,lis为购物清单,s为输入金额
js = input("是否要去结算(y/n):")
if js == 'y': sum2 = buy_sum(lis) # 求和
buy_look(lis)
print("你共计消费总额:", sum2, "还余:", s - sum2)
else:
lis.clear()
print(lis)
print("你共计消费总额:", 0, "还余:", s)
#================================================================
def menu(lis):
for k,v in enumerate(lis,1):
print(k,v) #################################################################
lism=list_m(goods)
lisn=list_n(goods)
goods_look(lism,lisn)
################################################################
s=input("请输入金额:")
input_s=int(s)
# caidan(cai)
while True :
menu(cai)
cai_s=input("请从上面的菜单选择(1-5):")
if cai_s == "" :
buy_act(lism,lisn,input_s)
if cai_s == "" :
if len(buy_lis):
buy_remove(buy_lis)
else:
print("请重新选择")
continue
if cai_s == "" :
if len(buy_lis):
if buy_sum(buy_lis) <= input_s :
buy_end(buy_lis, input_s) #结算付款
temp=input_s - buy_sum(buy_lis)#付款余额
input_s = temp
buy_lis.clear()#清空购买物品list数组
else:
print("余额不足请充值")
input_s = buy_cz(input_s)
print("余额为:",input_s)
else:
print("还没有购买请重新选择")
continue
if cai_s == "" :
input_s = buy_cz(input_s)
print("余额为:",input_s)
if cai_s == "" :
break
三级连动,输入一个县级市 查看属于哪个省哪个市
#!/usr/bin/env python3
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"湖北": {
"武汉": ["武昌", "汉口", "汉阳"],
"荆州": ["洪湖", "监利", "沙市"],
},
"广东":{
"深圳":["罗湖","福田","南山","盐田"]
},
}
lis1 = []
lis2 = []
s=input("please input country:")
flag=True #标识符,没有查到为真,找到了设为假
for i in dic.keys():
for j in dic[i].keys():
lis2.append(j)
k = 0
while k < len(dic[i][j]):
# lis2.clear() 创建 新的数组
# lis2.append(i)
# lis2.append(j)
#
# # lis2.append(j)
#
# lis2.append(dic[i][j][k])
#
# print(lis2)
# lis1.append([lis2[0], lis2[1], lis2[2]])
# print(i, '\t', j, '\t', dic[i][j][k])
if s==dic[i][j][k]:
print(i,j,s)
flag=False
break
k = k + 1 if flag:
print("系统中没有您所查的信息")
python笔记二的更多相关文章
- Python笔记(二)
python笔记 函数式编程 函数 函数是Python内建支持一种封装(将大段代码拆成函数) 通过函数的调用,可以将复制的任务分解. 函数式编程(Functional Programming) 计算机 ...
- python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)
一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...
- guxh的python笔记二:函数基础
1,函数的参数 1.1,查看函数的参数类型 def run(a, *args, b, **kwargs): return a + b 可以通过如下方式查看参数类型: import inspect k ...
- python笔记二(mysql数据库操作)
python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...
- Python笔记(二)查找重复元素
一.查找数列重复元素---count() >>> list = [,,,,,,,,,,,] >>> set = set(list) >>> for ...
- python 笔记二
17.进程线程 进程间通信方式:管道Pipe:队列Queue:共享内存Value.Array.Manager: 多进程同步:锁Lock.递归锁RLock.Condition(条件变量):事件event ...
- Python笔记(二十九)_模块
模块 在Python中,一个.py文件就是一个模块 if __name__ == '__main__':所有模块都有一个 __name__ 属性,__name__ 的值取决于如何应用模块 run当前文 ...
- Python笔记(二十六)_魔法方法_属性的魔法方法
属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...
- Python笔记(二十四)_魔法方法_运算符的魔法方法
算数运算方法 .反运算方法 以对象A+对象B为例,都是将A作为self值,而B作为other值传入__add__(self,other)方法: 当用户输入A+B,就会调用重写的add方法: >& ...
随机推荐
- postman接口自动化,环境变量的用法详解(附postman常用的方法)
在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...
- Docker:Windows7下使用docker toolbox(1)
一.安装 官方网址:https://docs.docker.com/docker-for-windows/install/ win10以下安装:https://www.docker.com/produ ...
- 2017.11.10 重读C++ Primer
第二章 变量和变量类型 1. C++ 算数类型 bool 布尔 最小尺寸未定义 char 字符 8位 wchar_t ...
- Kubernetes持久化存储2——探究实验
目录贴:Kubernetes学习系列 一.简介 本文在“创建PV,创建PVC挂载PV,创建POD挂载PVC”这个环境的基础上,进行各种删除实验,并记录.分析各资源的状态. 二.实验脚本 实验创建了一个 ...
- DataTables页面列点击排序
<!-- DataTables --> <script type="text/javascript" charset="utf8" src=& ...
- 20190409Liunx中计划任务及压缩归档week2_day1
计划任务介绍 我们可以通过一些设置.来让电脑定时提醒我们该做什么事了.或者我们提前设置好,告诉电脑你几点做什么几点做什么,这种我们就叫它定时任务.而遇到一些需要执行的事情或任务.我们也可以通过命令来告 ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- Python Redis 管道
redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pi ...
- 【Alpha】Scrum Meeting 1
前言 第1次会议在3月17日由PM在教一317召开. 主要确定了选题,并对目标进行了初步的确定.时长90min. 任务分配 姓名 当前阶段任务 下阶段任务 吴昊 确定项目方向,本地部署代码,完成团队介 ...
- 【Alpha】Scrum Meeting 2
前言 第2次会议在3月28日由PM在教一317召开. 主要确定了项目方向和目标功能,进行了任务分工.时长60min. 任务分配 姓名 当前阶段任务 下阶段任务 吴昊 熟悉代码和配置环境,发布手机端博客 ...