上节拾遗

1、编码转换过程,utf-8转换gbk 过程 经过解码(py27):

x.decode('utf-8')-->unicode-->编码x.encode('gbk')

ps:py3 默认的字符编码为UTF-8

运算符

1、算数运算:


实例:

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32

  

2、比较运算:

实例:

#!/usr/bin/python

a = 21
b = 10
c = 0 if ( a == b ):
print "Line 1 - a is equal to b"
else:
print "Line 1 - a is not equal to b" if ( a != b ):
print "Line 2 - a is not equal to b"
else:
print "Line 2 - a is equal to b" if ( a <> b ):
print "Line 3 - a is not equal to b"
else:
print "Line 3 - a is equal to b" if ( a < b ):
print "Line 4 - a is less than b"
else:
print "Line 4 - a is not less than b" if ( a > b ):
print "Line 5 - a is greater than b"
else:
print "Line 5 - a is not greater than b" a = 5;
b = 20;
if ( a <= b ):
print "Line 6 - a is either less than or equal to b"
else:
print "Line 6 - a is neither less than nor equal to b" if ( b >= a ):
print "Line 7 - b is either greater than or equal to b"
else:
print "Line 7 - b is neither greater than nor equal to b"

3、赋值运算:

实例:

#!/usr/bin/python

a = 21
b = 10
c = 0 c = a + b
print "Line 1 - Value of c is ", c c += a
print "Line 2 - Value of c is ", c c *= a
print "Line 3 - Value of c is ", c c /= a
print "Line 4 - Value of c is ", c c = 2
c %= a
print "Line 5 - Value of c is ", c c **= a
print "Line 6 - Value of c is ", c c //= a
print "Line 7 - Value of c is ", c

4、逻辑运算:

实例:

#!/usr/bin/python

a = 10
b = 20
c = 0 if ( a and b ):
print "Line 1 - a and b are true"
else:
print "Line 1 - Either a is not true or b is not true" if ( a or b ):
print "Line 2 - Either a is true or b is true or both are true"
else:
print "Line 2 - Neither a is true nor b is true" a = 0
if ( a and b ):
print "Line 3 - a and b are true"
else:
print "Line 3 - Either a is not true or b is not true" if ( a or b ):
print "Line 4 - Either a is true or b is true or both are true"
else:
print "Line 4 - Neither a is true nor b is true" if not( a and b ):
print "Line 5 - Either a is not true or b is not true"
else:
print "Line 5 - a and b are true"

5、成员运算:

实例:

#!/usr/bin/python

a = 10
b = 20
list = [1, 2, 3, 4, 5 ]; if ( a in list ):
print "Line 1 - a is available in the given list"
else:
print "Line 1 - a is not available in the given list" if ( b not in list ):
print "Line 2 - b is not available in the given list"
else:
print "Line 2 - b is available in the given list" a = 2
if ( a in list ):
print "Line 3 - a is available in the given list"
else:
print "Line 3 - a is not available in the given list"

基本数据类型

1、数字类型(int)

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807 

  int内部优化

n1,n2 共享同一块内存,

  • Python中的int对象就是c语言中long类型数值的扩展
  • 小整数对象[-5, 257]在python中是共享的
  • 整数对象都是从缓冲池中获取的。

方法:

bit_length()#返回表示该数字的时占用的最少位数
conjugate()#返回该复数的共轭复数

实例:

n1=5
print (n1.bit_length()) print (3+2j.conjugate())

2、布尔值(bool)

-->真或假
-->1 或 0

3、字符串(str)

创建字符串:

al = 'Hello,world'
字符串(str)类型和bytes类型转换py3版本
str(bytes_or_buffer[, encoding[, errors]]) -> str 
name ="博客园"
for i in name:
print(i)
bytes_list = bytes(i, encoding='utf-8')
print(bytes_list) # 默认每一个字节都是16进制表示
for x in bytes_list:
print(x,bin(x)) # 默认每一个字节都是10进制表示

由于utf-8--》3个字节
  gbk --》 2字节
输出结果:


b'\xe5\x8d\x9a'
229 0b11100101
141 0b10001101
154 0b10011010

b'\xe5\xae\xa2'
229 0b11100101
174 0b10101110
162 0b10100010

b'\xe5\x9b\xad'
229 0b11100101
155 0b10011011
173 0b10101101
  • 进制的转换如下图:

 方法:

str.capitalize()    #首字母变大写
str.center(self, width, fillchar=None) #内容居中,width:总长度;fillchar:空白处填充内容,默认无
str.count(self, sub, start=None, end=None) #子序列个数
str.decode(self, encoding=None, errors=None)   #解码
str.encode(self, encoding=None, errors=None)   #编码,针对unicode
str.endswith(self, suffix, start=None, end=None) #是否以 xxx 结尾
str.expandtabs(self,tabsize=None)  #将tab转换成空格,默认一个tab转换成8个空格
str.find(self,sub,start=None,end=None) #寻找子序列位置,如果没找到,返回 -1
str.format(*args, **kwargs)  #字符串格式化
str.index(self,sub,start=None,end=None)#子序列位置,如果没找到,报错
str.isalnum() #检查是否是字母和数字
str.isalpha() #检查是否是字母
str.isdigit() #检查是否是数字
str.islower() #检查是否小写
str.isspace() #检查是否有空格
str.istitle() #检查所有单词首字母大写且其他字母为小写返回True
str.isupper() #检查是否为大写
str.join()  #连接
str.ljust() #内容左对齐,右侧填充
str.lower() #变小写
str.lstrip()# 左侧去除空格
str.rstrip()#右侧去除空格
str.strip()#去除两侧空格
str.partition()#指定分割成3部分,从左往右
str.replace()#替换
str.rfind()#返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
str.rindex()#返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。
str.rjust()#右侧对齐,左侧填充
str.rpartiton()#指定分割成3部分,从右往左
str.split()#分割, maxsplit最多分割几次
str.splitlines() #根据换行分割
str.startswith() #是否起始
str.swapcase()# 反转,大小变小写,小写变大写
str.upper()#小写转换成大写
str.zfill()#方法返回指定长度的字符串,原字符串右对齐,前面填充0。

字符串常用功能分别为:移除空格、分割、长度、索引、切片等。

4、列表(list)

创建列表:

name_list = ['Hello', 'cnblogs']

name_list = list(['Hello', 'Hello'])

方法:

list.append(obj)#在列表末尾添加新的对象
list.count(obj)#统计某个元素在列表中出现的次数
list.extend(seq)#在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)#从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)#将对象插入列表
list.pop(obj=list[-1])#移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)#移除列表中某个值的第一个匹配项
list.reverse()#反向列表中元素
list.sort([func])#对原列表进行排序

列表常用基本操作为:索引、切片、追加、删除、长度、循环、包含等。

5、元组(tuple)

创建元组:

ages = (11, 22, 33, 44, 55)

ages = tuple((11, 22, 33, 44, 55))

方法: 

tuple.count()#统计某个元素在列表中出现的次数
tuple.index()#找出某个值第一个匹配项的索引位置  

元祖常用基本操作为:索引、切片、删除、长度、包含等。

6、字典(dict)

创建字典:

person = {"name": "mr.wu", 'age': 18}

person = dict({"name": "mr.wu", 'age': 18})
  • 小案例,取出字典里的123:

      li = [ "alex" , 123, {"k1":"v1", "k2": {"vv": (11,22,123), "ii": 456}}]
    
    print(li[2]['k2']['vv'][2])
  • dict.fromkeys的用法了解:

    a1= dict.fromkeys(['k1','k2','k3'],[])
    print(a1)
    a1['k1'].append('1')
    print(a1)

方法:

dict.clear()#删除字典内所有元素
dict.copy()#返回一个字典的浅复制
dict.fromkeys()#创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key, default=None)#返回指定键的值,如果值不在字典中返回default值
dict.has_key(key)#如果键在字典dict里返回true,否则返回false
dict.items()#以列表返回可遍历的(键, 值) 元组数组
dict.keys()#以列表返回一个字典所有的键
dict.setdefault(key, default=None)#和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2)#把字典dict2的键/值对更新到dict里
dict.values()#以列表返回字典中的所有值

字典常用基本操作为:索引、新增、删除、键值对、循环、长度等。

优雅的用法

1、for循环

用户按照顺序循环可迭代对象中的内容

li = [11,22,33,44]
for item in li:
print item

2、enumrate

为可迭代的对象添加序号

li = [11,22,33]
for k,v in enumerate(li, 1):
print(k,v)

3、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] 

ps:py3没有xrange只有range,但是range为xrange的功能

 

练习题

1、元素分类

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

dict_list = {
'k1':[],
'k2':[]
}
li =[11,22,33,44,55,66,77,88,99,90] for i in li:
if i <=66:
dict_list['k1'].append(i)
else:
dict_list['k2'].append(i) print (dict_list)
  
2、查找
查找列表中元素,移动空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
li = ["alec", " aric", "Alex", "Tony", "rain"]
for i in li:
a = i.lstrip()
if (a.startswith('a') or a.startswith('A')) and a.endswith('c'):
print (a) 
tu = ("alec", " aric", "Alex", "Tony", "rain")

for i in tu:
if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
print (i) 
dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}
for i in dic.values():
a = i.strip()
if (a.startswith('a') or a.startswith('A')) and a.endswith('c'):
print (a)

3、输出商品列表,用户输入序号,显示用户选中的商品

   商品 li = ["手机", "电脑", '鼠标垫', '游艇']

li = ["手机", "电脑", '鼠标垫', '游艇']
for i,k in enumerate(li,1):
print (i,k)
inp = int(input('请输入要购买的商品编号:'))
print (li[inp - 1])

4 、购物车

功能需求:

  • 要求用户输入总资产,例如:2000
  • 显示商品列表,让用户根据序号选择商品,加入购物车
  • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
  • 附加:可充值、某商品移除购物车

  

import  time
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
other = ['继续购物','充值','查看购物车','删除商品','离开商城']
shop_list = []
chose = int(input('请输入您的工资:'))
while True:
print('序列','商品','价格')
for k,v in enumerate(goods,1):
print(k,('%s:%s元'%(v['name'],v['price'])))
inp_list =int(input('请输入您要购买的商品序列号:'))
a,b = goods[inp_list -1]['name'],goods[inp_list -1]['price']
if b < chose:
chose-=b
shop_list.append(a)
print('您够买的商品为:\033[32m[%s]\033[0m已经加入购物车,帐号剩余:\033[32m%s\033[0m元'%(a,chose))
for i,k in enumerate(other,1):
print(i,k)
choose = int(input('请输入您的选择:'))
if choose == 1:
continue
elif choose == 2:
up = int(input('请输入您充值多少钱:'))
chose +=up
for i,k in enumerate(other,1):
print(i,k)
choose = int(input('请输入您的选择:'))
elif choose == 3:
for i,k in enumerate(shop_list,1):
print('\033[34m%s.%s\033[0m'%(i,k))
print('2秒后返回商城'.center(50,'-'))
time.sleep(2)
elif choose == 4:
for i,k in enumerate(shop_list,1):
print('\033[34m%s.%s\033[0m'%(i,k))
sp = int(input('请输入您要删除的商品编号:'))
sp-=1
shop_list.remove(shop_list[sp])
print ('您已经删除商品:\033[32m[%s]\033[0m'%(k))
chose+=b
print('钱已经返回账户,余额为:\033[35m[%s元]\033[0m'%(chose))
print('2秒后返回商城')
time.sleep(2)
elif choose ==5:
print('您购买的商品如下:\033[35m%s\n\033[0m还剩人民币:\033[35m%s元\033[0m'%(shop_list,chose))
break else:
print('\033[31m 您的余额不足请充值 \033[0m')
print('充值请输入1,退出请按2:')
choose = int(input('请输入您的选择:'))
if choose ==1:
up = int(input('请输入您充值多少钱:'))
chose +=up
elif choose ==2:
print('您购买的商品如下:\033[35m%s\033[0m还剩人民币:\033[35m%s元\033[0m'%(shop_list,chose))
break

5、用户交互,显示省市县三级联动的选择

dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"河南": {
"郑州市":["中原区", "二七区", "管城区", "金水区", "上街区", "惠济区", "巩义市"],
"开封市":["鼓楼区", "龙亭区", "顺河区", "禹王台", "金明区", "杞 县", "通许县", "尉氏县"],
},
"山西": {
"大同市":["城区","矿区","南郊区","新荣区"],
"晋中市":["榆次区","左权县","太谷县"],
}
}

法一:

#/usr/bin/env python
#_*_coding:utf-8_*_ flag = True
while flag:
Provinces = []
city = []
counties = []
while flag:
for k,v in enumerate(dic,1):
print(k,v)
Provinces.append(v)
Pro_inp = int(input('请输入省份的编号:'))
print('您当前所在的位置为:%s'%(Provinces[Pro_inp -1]))
#-----------------------------------------------------
while flag:
for a,b in enumerate(dic[Provinces[Pro_inp -1]],1):
print(a,b)
city.append(b)
city_inp = int(input('请输入城市的编号:'))
if city_inp > a or city_inp == 0:
continue
print('您当前所在的位置为:%s'%(city[city_inp - 1]))
#---------------------------------------------------
while flag:
inp = input("b 返回上一级\nn 继续\nq 退出\n请输入你的选择:")
if inp == "q" or inp == "b" or inp == "n":
break
else:
print("输入错误,请重新输入!")
continue
if inp == 'b':
continue
elif inp =='q':
flag=False
continue
while flag:
for c ,d in enumerate(dic[Provinces[Pro_inp -1]][city[city_inp -1]],1):
print(c,d)
counties.append(d)
coun_inp = int(input('请输入城市的编号:'))
if city_inp > a or city_inp == 0:
continue
print('您当前所在的位置为:%s'%(counties[coun_inp - 1]))
while flag:
inp = input("b 返回上一级\nq 退出\n请输入你的选择:")
if inp == "q" or inp == "b" :
break else:
print("输入错误,请重新输入!")
continue
if inp =='q':
flag=False
break
elif inp =='b':
continue

法二:

print('欢迎进入行政区划查询系统:')
for i in dic.keys():
print (i)
flag = True
while flag:
inp = input('请输入省份:')
for x in dic.keys():
if x ==inp:
for a in dic[inp]:
print(a)
inp_c = input('请输入市:')
for b in dic[inp][inp_c]:
print(b)
inp_d = input('请输入县:')
for d in dic[inp][inp_c]:
if inp_d ==d:
print('您当前所在的位置:\033[31m%s(省)-->%s(市)-->%s(县)\033[0m'%(inp,inp_c,inp_d))
print('退出请按:1')
int_inp = int(input('请选择:'))
if int_inp =='1':
continue
flag =False

 

  

 

 

Python 基础系列一:初识python(二)基本数据类型的更多相关文章

  1. python基础篇_001_初识Python

    一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/  .安装:默认安装路径:C:\pytho ...

  2. python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda

    ---恢复内容开始--- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda 从头开启python的开发环境搭建.安装比较简单, ...

  3. python基础系列教程——Python中的编码问题,中文乱码问题

    python基础系列教程——Python中的编码问题,中文乱码问题 如果不声明编码,则中文会报错,即使是注释也会报错. # -*- coding: UTF-8 -*- 或者 #coding=utf-8 ...

  4. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  5. python基础系列教程——Python库的安装与卸载

    python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...

  6. 孤荷凌寒自学python第三十八天初识python的线程控制

     孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...

  7. 孤荷凌寒自学python第十七天初识Python的函数

    孤荷凌寒自学python第十七天初识Python的函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 函数是能够完成指定运算并返回运算结果的代码块.是结构化编程重要的结构. 我首先发现pyt ...

  8. 孤荷凌寒自学python第十一天初识Python的字典类

    孤荷凌寒自学python第十一天初识Python的字典类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的字典其实是一张二维对照表 下面举例说明: 键名Key 姓名 性别 身高 ...

  9. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

  10. Java基础系列1:深入理解Java数据类型

    Java基础系列1:深入理解Java数据类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括四个 ...

随机推荐

  1. 使用Sidecar将Node.js引入Spring Cloud

    网上看到的一篇文章,觉得写得挺好,现转载于此,以方便需要的网友查阅. 该文章介绍了非JAVA语言提供的应用集成到Spring Cloud的这样一个实现,以便我们使用其他语言作为参考. 感谢原作者分享, ...

  2. Spring Cloud官方文档中文版-客户端负载均衡:Ribbon

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...

  3. JavaSE(十)集合之List

    前面一篇的corejava讲的是集合的概述,这一篇我将详细的和大家讲解一下Collection下面的List.set.queue这三个子接口.希望大家能得到提升. 一.List接口 1.1.List接 ...

  4. Java Collections 源码分析

    Java Collections API源码分析 侯捷老师剖析了不少Framework,如MFC,STL等.侯老师有句名言: 源码面前,了无秘密 这句话还在知乎引起广泛讨论. 我对教授程序设计的一点想 ...

  5. 结对编程1 (四则运算基于GUI)

    https://git.coding.net/Luo_yujie/sizeyunsuan.app.git 201421123034 201421123032 1. 需求分析 这次作业新引用了语言选择, ...

  6. Java第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  7. 201521123053《Java程序设计》第四周总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 现在上课跟着老师的思路走,一般都能理解了.就是课上知识点有些难以记住. 特别讲讲这个思维导图 ...

  8. 如何将ubuntu文件夹中文名改为英文

    其实我已经忍了很久. ubuntu在中文界面下面,自动创建了"桌面","文档",图片 .公共的 .下载. 音乐. 视频等中文目录. 在命令行下操作的时候,要么切 ...

  9. 201521123034 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前 ...

  10. 201521123032 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...