day01课程回顾,数据类型
Day01
Python的分类
Cpython:代码àc字节码->机器码 一行一行的编译执行
Pypy: 代码àc字节码->机器码 全部转换完再执行
其他python 代码-->其他字节码-->机器码
Python的执行
Windows:C:\Python35\python.exe D:\1.txt(python可执行文件路径---解释器 执行文件)
Linux:可以在文件的头部写#!/usr/bin/python python安装路径(用命令whereis python可以查到 )
Ps:文件格式用.py(潜规则)
编码
编码 |
字母占位 |
中文占位 |
特殊 |
|
Unicode |
万国码 |
2字节、16位 |
3字节、24位 |
占存储空间较大 |
Utf-8 |
对万国码的压缩 |
1字节、8位 |
3字节、24位 |
压缩了存储空间 |
Jbk、gb2312 |
中文的编码 |
1字节、8位 |
2字节、16位 |
不支持其他语言 |
Python编码
在Linux下文件头写# -*- coding:utf-8 -*- 表示解释器用utf-8编码解析,而文件本身存储编码不影响。
Ps:python2.7以前版本默认解释器编码为ascii ,3.0以后是utf-8
变量
命名要求
字母、数字、下划线组成,数字不能开头,不能是关键字
Ps:Python用_来分割,不使用驼峰式命名
输入、输出
Name=intput(“请输入用户名”) #name接收用户输入
Import getpass
Password=getpass.getpass(“请输入密码”)
条件判断if
if
if 条件:
成功走这里elif
elif条件:
符合条件走这里
else:
否则到这里
循环 while
while 条件:
continue # 立即开始下次循环
break # 跳出所有循环
循环for
练习:
1、使用while循环输入 1 2 3 4 5 6 8 9 10
i=0
while i<10 :
i
+= 1
if i==7:
continue
else:
print(i)
2、求1-100的所有数的和
sum = 0
i = 1
while i < 101 :
sum += i
i += 1
print(sum)
3、输出 1-100 内的所有奇数
i = 0
while i < 101:
if i%2!=0:
print(i)
i += 1
4、输出 1-100 内的所有偶数
i = 0
while i<101:
if i%2 == 0 :
print(i)
i += 1
5、求1-2+3-4+5 ... 99的所有数的和
sum = 0
i = 0
while i<100 :
if i%2==0:
sum -= i
else :
sum += i
i += 1
print(sum)
6、用户登陆(三次机会重试)
name = "zhengsiyu"
password = "537131"
i = 3
while i>0 :
name1 = input("name:")
password1 = input("password:")
if name1==name:
if password1==password:
print("login success!")
i = 3
break
else :
print("password is wrong!please try it again!")
i -= 1
else :
print("name is not exist!")
i -= 1
if i == 0 :
print("you 3 times is used,byebye!")
***逻辑运算符(复习必看)
if 1 == 1 or 1 > 2 and 1 == 4:
print('正确')
else:
print('错误')
字符串
字符串定义
Name=“zhengsiyu”
Print(Name[1]) ===》 h
这里name就是一个字符串相当于str()
转换
字符串只有内容是数字才可以转换成int()
字符串拼接
name = "zhengsiyu"
age = "29"
message = name + age
print(message)=======》zhengsiyu29
字符串格式化(%s占位)
name = "my name is %s,%d years old"
name1 = input("name:")
age1=int(input("age:"))
name_str=name %(name1,age1)
print(name_str)
运行结果是:(输入name:aa,年龄为11)
my name is aa,11 years old
判断子序列是否在字符串中(in)
name ="zhengsiyu"
if 'a' in name :
print("yes")
else:
print("no")
ps:中文也可以识别
移除空白
name = " aaaa "
#name = name.strip()左右两边空白都移除
#name = name.lstrip()移除左面空白
name = name.rstrip()移除右面空白
print(name)
分割
name ="zhengsiyu"
first_name=name.split('s')
print(first_name)
运行结果是:['zheng', 'iyu']
如果分割符不存在则不进行分割
first_name=name.split('l')
运行结果是:['zhengsiyu']
name ="zhengsiyuzhengsiyuzhengsiyu"
first_name=name.split('u',2)
print(first_name)
运行结果是:['zhengsiy', 'zhengsiy', 'zhengsiyu']
name ="zhengsiyuzhengsiyuzhengsiyu"
first_name=name.split('u',3)
print(first_name)
运行结果是:['zhengsiy', 'zhengsiy', 'zhengsiy', '']
name ="zhengsiyuzhengsiyuzhengsiyu"
first_name=name.split('u',6)
print(first_name)
运行结果是:['zhengsiy', 'zhengsiy', 'zhengsiy', '']
长度
name ="zhengsiyuzhengsiyuzhengsiyu"
first_name=name.split('u',6)
print(first_name)
print(len(first_name))
运行结果是:['zhengsiy', 'zhengsiy', 'zhengsiy', '']
4
Ps:分割完以后按模块计算长度
索引
就是下标
name ="zhengsiyuzhengsiyuzhengsiyu"
print(name[2])
运行结果是:e
切片
str="12345567asdffg,sde102"
print(str[1])# : 2
print(str[0:2])#从第一个一直到第二个: 12
print(str[0::4])#每隔四个取值一次:15afd2
print(str[5:9])#第五个到第九个:567a
print(str[3:])#第三个到结尾:45567asdffg,sde102
print(str[2:-4])#第二个到倒数第四个:345567asdffg,sd
print(str[-6:])#输出最后6个字符:sde102
print(str[:-6])#第一个到最后六个:12345567asdffg,
print("------")
print(str[-3:-1])#10
print(str[-1::-2])#21d,fda6531
列表
创建列表
a = ['alex','狗','eric',123]
a=list(a = ['alex','狗','eric',123])
判断列表中元素是否存在(in)
table = ["name","age","tom"]
if 'name' in table :
print("yes")
else :
print("no")
程序运行结果:yes
索引/长度/切片(同字符串)
增list.append
table = ["name","age","tom"]
table.append('hhhhh')
print(table)
程序运行结果:['name', 'age', 'tom', 'hhhhh']
增插入list.insert
table = ["name","age","tom"]
table.insert(1,'aaa')
for item in table :
print(item)
程序运行结果:
name
aaa
age
tom
ps:如果插入的下标越界则插到最后一位
table = ["name","age","tom"]
table.insert(7,'aaa')
# for item in table :
# print(item)
print(table)
程序运行结果:['name', 'age', 'tom', 'aaa']
删
1、通过元素内容删除
table = ["name","age","tom"]
table.remove('age')
print(table)
程序运行结果:['name', 'tom']
Ps:如果删除不存在的元素,则会报错
2、通过索引删除
table = ["name","age","tom"]
del table[1]
print(table)
程序运行结果:['name', 'tom']
Ps:如果删除下标越界,则会报错
改
通过索引修改
table = ["name","age","tom"]
table[0]='nanan'
print(table)
程序运行结果:['nanan', 'age', 'tom']
根据元素内容修改:
#将元素age修改为www
n=0
table = ["name","age","tom"]
if 'age' in table :
for i in table :
n += 1
if i == 'name' :
print(n)
break
else :
print("\'age\' is not exist in table")
table[n] = 'www'
for item in table :
print(item)
字典(字典是无序的)
我理解的字典:
字典可以看做是一个对象的属性,列表就是好多个人的集合
定义
v = {'name':'zzz',
'age':'12',
'id':13020111}
ps:可以定义为空v={}
索引获取值
v = {'name':'zzz',
'age':'12',
'id':13020111}
name=v['name']
print(name)
程序运行结果:zzz
增加,无,增加;有,修改
v = {'name':'zzz',
'age':'12',
'id':13020111}
v['address']='sdfsdfsfsfsdfsf'
print(v)
ps:字典是无序的,所以增加到什么位置不确定
程序运行结果:{'address': 'sdfsdfsfsfsdfsf', 'name': 'zzz', 'age': '12', 'id': 13020111}
删除
v = {'name':'zzz',
'age':'12',
'id':13020111}
v['address']='sdfsdfsfsfsdfsf'
del v['age']
print(v)
程序运行结果:{'id': 13020111, 'address': 'sdfsdfsfsfsdfsf', 'name': 'zzz'}
遍历(复习必看)
遍历字典
v = {'name':'zzz',
'age':'12',
'id':13020111}
v['address']='sdfsdfsfsfsdfsf'
for key,val in v.items() :
print (key,val)
程序运行结果:
address sdfsdfsfsfsdfsf
age 12
id 13020111
name zzz
遍历键值:
for i in v.keys() :
print(i)
程序运行结果:
age
id
name
address
遍历值
for i in v.values() :
print(i)
程序运行结果:
zzz
12
13020111
sdfsdfsfsfsdfsf
字典长度(len())
v = {'name':'zzz',
'age':'12',
'id':13020111}
v['address']='sdfsdfsfsfsdfsf'
print(len(v))
程序运行结果:4
练习(复习必看)
用户登录系统,使用字典列表验证密码
table = [{'username':'jojo','password':'123456'},
{'username':'admin','password':'537131'},
{'username':'was','password':'was'},
{'username': 'wasqqq', 'password': 'wasqqq'}]
i = 3
for item in table :
name = input("username:")
pwd = input("password:")
if name == item['username'] and pwd == item['password']:
print("login success")
break
else :
i -=1
if
i == 0 :
print("login
fail,your times is out!")
break
print("username or password is wrong ,please try it
again!")
***读取文件内容(复习必看)
# f1 = open('G:\\_python学习视频\\day01\\db.txt','r')
f1 = open('db.txt','r')#同级目录不需要写路径
date = f1.read()
f1.close()
#print(date)
usr_info_list = []
usr_str_list = date.split('\n')
for item in usr_str_list :
temp = item.split('|')
v = {'name':temp[0],
'pwd':temp[1],
'times':temp[2]}
usr_info_list.append(v)
print(usr_info_list)
***课上练习题,读出文件并验证用户命密码(三次机会)
把文件内容存入到字典以后,字典是用str类型存储,要使用需先转int在进行加减法,分两个步骤
元素分类
有如下值集合
v1 = [11,22,33,44,55,66,77,88,99,90],
将所有大于
66 的值保存至字典的第一个key中,将小于
66 的值保存至第二个key的值中。
即:
{'k1': 大于66的所有值, 'k2': 小于66的所有值}
v2 = {'k1': [],'k2':[] }
v = [11,22,33,44,55,66,77,88,99,90]
v1 =[]#big
v2 =[]#little
k = {}
for i in v :
if i > 66 :
v1.append(i)
elif i< 66 :
v2.append(i)
else :
v3 = i
k['k1'] = v1
k['k2'] = v2
k['k']=v3
print(k)
代码输出结果:{'k2': [11, 22, 33, 44, 55], 'k1': [77, 88, 99, 90], 'k': 66}
购物车
price = int(input("您有多少总资产?"))
shopping_car = []
totle_price = 0
goods = [
{"name": "电脑", "price": 1999,"id":"001"},
{"name": "鼠标", "price": 10,"id":"002"},
{"name": "游艇", "price": 20,"id":"003"},
{"name": "美女", "price": 998,"id":"004"},
]
goods_list = []
for item in goods :
goods_name = item['name']
goods_id = item['id']
goods_info = goods_id+"-"+goods_name
goods_list.append(goods_info)
state = False
while True :
if state :
#打印购物清单
for item1 in shopping_car :
print(item1['name']+str(item1['price']))
str ="购物车总额:%d"
str1 =str %(totle_price)
print(str1)
#结账
if_buy = input("结账请按任意键,退出请按0!")
if if_buy != 0 :
if price >= totle_price :
print("购买成功!")
else :
print("余额不足,购买失败!")
else:
print("BYE-BYE!")
break
break
else:
print("请选择您要加入购物车的商品id")
input_id = input(goods_list)
for item in goods :
if input_id == item['id'] :
# print(item['price'])
shopping_car.append(item)
totle_price += item['price']
message1 ="您将\"%s\"添加进了购物车,现在购物车总额:%d"
message = message1 %(item['name'],totle_price)
print(message)
break
else:
print("您输入的商品不存在,请重新选择")
go_on_shopping= input("继续购物请按-1,退出并查看购物车清单请按-2,清空购物车并退出请按其他键!")
if go_on_shopping =='1' :
continue
elif go_on_shopping == '2' :
state = True
else :
print("您的购物车已清空,BYE-BYE")
break
用户交互,显示省市县三级联动的选择
我写这个程序的时候写了if判断,判断用户输入的内容和字典内容进行匹配,其实可以看做多维数组,把索引用用户变量代替
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
}
"河南": {
...
}
"山西": {
...
}
}
for v in dic.keys():
print(v)
inp = input('>>>')
dic[inp]
程序代码如下:
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"河南": {
"郑州":["小郑州1","小郑州2"],
"西安":["小西安1","小西安2"]
},
"山西": {
"太原":["小太原1","小太原2"],
"大同":["小大同1","小大同2"]
}
}
for i in dic.keys():
print (i)
proviece = input(">>>")
for citys in dic[proviece].keys():
print(citys)
city = input(">>>")
for xian in dic[proviece][city]:
print(xian)
day01课程回顾,数据类型的更多相关文章
- 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾
「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 目录 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 Part 0 第四单元作业架构设计 架构设计概要 AppRun ...
- 【Spring学习】【Java基础回顾-数据类型】
Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...
- 第3节 storm高级应用:1、上次课程回顾,今日课程大纲,storm下载地址、运行过程等
上次课程内容回顾: ConcurrentHashMap是线程安全的,为什么多线程的时候还不好使,为什么还要加static关键字 1.storm的基本介绍:strom是twitter公司开源提供给apa ...
- 课程1——数据类型和变量
声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...
- 课程回顾5in1
提出过的问题 问题1:敏捷开发在现阶段急于使用或试行,会不会得到相反的结果? 整个开发流程在施行了一整个学期,有积极的影响,也有消极的影响.例如通过这个流程的实施,规划短期的项目进度,使得成员能逐步了 ...
- 1 —— js 语法回顾 —— 数据类型。流程控制。数组
一,数据类型 字符串 . 数值 .布尔. null . undefined . 对象 ( 数组 . 函数 function(){} . object) undefined 出现的情景 : (1)变 ...
- oo第四单元总结及总课程回顾
一.第四单元架构设计 1.第一次作业 第一次作业要求实现的只有对类图的分析.为了直观地搭建出一个类图,我新建了Manager类来处理UmlElement以及搭建树.但由于未能做好时间管理,因此第一次作 ...
- 课程回顾-Convolutional Neural Networks
为什么卷积层计算量更低paddingStrided convolution多维卷积LeNet 参数卷积网络的好处参数共享稀疏连接经典网络实现LeNet-5AlexNetVGGResNet残差块iden ...
- 课程回顾-Structuring Machine Learning Projects
正交化 Orthogonalization单一评价指标保证训练.验证.测试的数据分布一致不同的错误错误分析数据分布不一致迁移学习 transfer learning多任务学习 Multi-task l ...
随机推荐
- ST 单元测试之maven引入junit包
按照上篇博客,已经完成了mavne以及eclipse的安装配置,新建好了一个maven项目. 接下来打开项目,双击打开pom.xml,可以看到如下所示, 点击下方的pom.xml,然后添加如下代码,即 ...
- 【方法】如何限定IP访问Oracle数据库
[方法]如何限定IP访问Oracle数据库 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...
- FastCGI超过活动超时时间
线上环境:PHP5.4 and IIS 打开IIS管理器,找到FastCGI,打开后编辑选项 活动超时默认为70(秒) 请求超时默认为90(秒) 可根据项目需求来更改这两项的值
- 【树莓派】制作树莓派最小镜像:img裁剪瘦身
制作树莓派镜像,可以参考这篇文章:http://blog.csdn.net/talkxin/article/details/50456282 摘录部分要点内容如下(如果作者不允许转载,请联系即删除): ...
- 零件库管理信息系统设计--part03:管理员登录部分设计
兄弟们,我又回来啦! 上次我把表建完了.今天来点干货,我们用ssm框架来先简单实现一下管理员的登录功能. 在实现之前,我对user表(管理员表)做了些简单的修改,先来看看: 忽略哪些蓝色的马赛克和乱输 ...
- 在NAS设备上用NFS服务为RAC数据库和集群件存储oracle文件时的mount选项
今天在家折腾自己的小实验室,把自己NAS上的一个目录用NFS挂载到一套11g RAC的实验环境中. 当我在备份数据库到NAS上时,发现一个奇怪的问题,同样的目录下,默认backup 备份集的情况,备份 ...
- stl1
#include<iostream> #include<map> #include<string> using namespace std; map<st ...
- Mybatis 中一对多,多对一的配置
现在有很多电商平台,就拿这个来说吧.顾客跟订单的关系,一个顾客可以有多张订单,但是一个订单只能对应一个顾客. 一对多的顾客 <?xml version="1.0" encod ...
- 【Egret】使用VSCode 编译,断点调试Egret项目
经过我日积月累的摸索,还是一直模模糊糊的,搞不懂,今天经晨哥点拨两下,一下子就恍然大悟,搞定了怎么弄这个东西,现将经验分享如下. 一.效果目的 1.在VSCode里,直接F5打开Egret页面,并且可 ...
- 【Electron】Electron开发入门(三):main process和web page 通信
一.main process 和 web page 通信 electron框架主进程(Main Process)与嵌入的网页(web page,也就是renderer process)之间的通信 Ma ...