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方法: >& ...
随机推荐
- typescript 01 认识ts和ts的类型
看ITYING ts专辑(前三集总结) TypeScript 是 Javascript 的超级,遵循最新的 ES6.Es5 规范.TypeScript 扩展了 JavaScript 的语法.TypeS ...
- Cocos Creator 资源加载(笔记)
cc.loader 加载资源动态加载资源要注意两点,一是所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下.resources 需要在 assets 文件夹中手工 ...
- Oracle 10g收集数据库统计信息
1.需求概述 2.实施步骤 3.回退方案 1.需求概述 某数据库由于整体统计信息不准确,多次出现部分业务SQL选错执行计划,从而导致性能下降影响到最终用户体验,目前通过SQL_PROFILE绑定执行计 ...
- 前端JS常见面试题(代码自撸)
题目一示例: 适用于子数组等长度及不等长度. let arr = [ [1,2,3], [5,6,7,8], [9,10,11,12,13] ] function arrayDiagonal(arr) ...
- HTTPS学习笔记一----HTTPS的基础理论知识
首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...
- (转) SpringMVC学习笔记-
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...
- windows安装composer总结
1.直接去网吧下载windows安装EXE程序,傻瓜式安装,so easy. 2.通过命令行安装,可以直接在php目录跑起来 php -r "readfile('https://getcom ...
- 《CSS世界》读书笔记(四)--宽度分离
<!-- <CSS世界>张鑫旭著 --> CSS流体布局下的宽度分离原则 所谓“宽度分离原则”,就是CSS中的width属性不与影响宽度的padding/border(有时候包 ...
- sliver
import 'package:flutter/material.dart';import 'package:xxx/bloc/bloc.dart';import 'package:xxx/model ...
- angular7 DOM操作 及 @ViewChild
一.Angular 中的 dom 操作(原生 js) 二.Angular 中的 dom 操作(ViewChild) 三.父子组件中通过 ViewChild 调用子组件 的方法 1.调用子组件给子组件定 ...