二进制与十进制的转化,bool str int 之间的转化,str的常用操作,
1.基础数据类型总览(7种)
- int: 整型,用于进行+-*/运算
- str: 存储少量的数据;可加str,可乘数字,可切片,可进行9种常用操作
- bool: True False 判断真假
- list: 存储大量的数据;可进行增删改查
- tuple: 存储大量的数据,不可改变里面的元素
- dict: 存储大量的关联型的数据,查询速度非常快;可进行增删改查
- set: 自动去重;交并差集
2.int-二进制与十进制之间的相互转换
十进制转二进制
- 采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
42 -----> 0010 1010 #逆序排列,自右向左写,不够8位用0补齐
二进制转化为十进制
- 采用二进制上的数字乘以2的位数次方,再相加.(自右向左8位依次是2**0,...2的7次方)
0001 1010 ------> ? 26 b = 1*2**1 + 1*2**3 + 1*2**4 # # print(b) # 26
bit_lenth() 十进制转化成二进制的有效长度(有效位数)
# bit_lenth 有效的二进制的长度 a = 4 print(a.bit_lenth()) 结果为 3
3.bool str int 三者之间的转换***
- bool --- > int : True 1,False 0
- bool < --- int : 非零即True,0是False
- str --- > int : str里必须是数字,才能转
- str <--- int :均可
- bool <--- str : 非空即True
- bool --- > str : 无意义
4.str的索引,切片,步长
- 切片取值,顾头不固腚 (尾均需向尾的方向顺延1位)
- 对字符串索引,切片出来的都是字符串类型
- 从左至右有顺序,下标,索引。
- 可以倒序,但取出来的也是倒着读的str! ! !
- 不管哪种方式取值,取出来都是一个新的str,和原来的那个str没关系(即原来的s1不会因为取值而变化)
# 按索引:s1[index]
# 按照切片: s1[start_index: end_index+1]
# 按照切片步长: s1[start_index: end_index+1:2]
# 反向按照切片步长: s1[start_index: end_index后延一位:2]
#str里的四种取值方法:
#1.按索引取值
# 取出来的只有一个元素,格式:str[下标],用的是[]
# 注:按索引取值 ,规定头标是0,尾标是-1,其他元素下标既可从0往右数(正数),也可从-1往左数(倒数),都是在同一个坐标轴上移动,不过起始的参照位置不同而已。
# 注:关于正数倒数的选择,取决于你要取的元素离哪头近.
s1 = 'python全栈22期'
# s2 = s1[0]
# print(s2,type(s2)) # p 头是0
# s3 = s1[-1]
# print(s3) # 期 尾是-1
# s4 = s1[2]
# print(s4) # t 正数
# s5 = s1[-9]
# print(s5) # t 倒数
#2.按切片取值-----顾头不顾尾(向尾的方向顺延1位)
# 格式:str[首:尾向尾顺延1]
# 注:尾标要向尾的方向顺延1位(正切,向右顺延,即正无穷方向)
# 注:不写步长,则默认步长为正1.
# 注:按切片取时,下标若是0,可省略不写
# 注:全取时,规定首位写成空.
# 注:头和尾的索引既可正着数(从0往右数),又可倒着数(从-1往左数);不管尾正数还是倒数,数出来后都是往尾的方向顺延一位(正切,向右顺延)!!! 重要!!!
s1 = 'python全栈22期'
# s2 = s1[0:6]
# print(s2) # python # 尾正着数: n的下标5,往右顺延一位(因为是正数),即为6(坐标轴)
# s3 = s1[:6] # 0可省略不写
# print(s3) # python
# s4 = s1[:-5]
# print(s4) # python # 尾倒着数: n的下标是-6(倒着数都是从-1开始往左数),往切片的尾方向顺延1位(正数,向右顺延),即为-5(坐标轴)
# 注: 首尾都是即可正数又可倒着数,看这个元素离哪头近. s2 = s1[0:6]也可写成 s2 = s1[-11:6]--蠢,此题首在最左边,所以正数比较方便.
# 全取出来
# s5 = s1[:] # 规定:凡是全取,首尾都要写成空(不是0)! ! !有且仅有这一种写法
# print(s5)
s1 = 'python全栈22期'
# s6 = s1[6:11]
# print(s6) # 全栈22期 #尾正着数: 期的下标是10,往尾的方向顺延1位,是11--------这种数法很蠢
# s6 = s1[6:]
# print(s6) # 全栈22期 #尾索引倒着数: 倒数是从最后面的-1开始往左数,恰好本题的期在最后面,故期的下标是-1(不用再往左数了)。再往右顺延(正切往右顺延)1是0
# 注:首标也是既可正数,又可倒数的.s6 = s1[6:11] 也可写成 s6 = s1[-5:11]
#3.按切片步长取值(正切)
# 格式:[间隔切片的首:间隔切片的尾:步长]
# 注:切片步长只能跳着取(切片才是连着取);
# 步长=某两个间隔字符下标相减,一定是 后-前(只有间隔的字符之间才有步长)
# 注:正切,步长一定为正
# 注:因为仍是切片取值,故依然是顾首不顾尾(尾要向尾的方向顺延1位);
s1 = 'python全栈22期'
# s2 = s1[:5:2] # pto # 尾标正数: o的下标4,往尾的方向顺延1位(正切,往右顺延),即为5
# print(s2)
# s3 = s1[:-6:2] # pto # 尾标倒数: 凡是倒数,都是从最后面的-1开始往左数,故o的下标为-7,再往切片尾的方向(正切,尾往右顺)顺延1位,即为-6
# print(s3)
# 小结:不管尾标是正着数还是倒着数,数出来下标后,正切都是往右顺延1位(因为正向切片的尾在右边)
# 注:因为要取出的str首标在最左边,故正数方便
#4.反向按切片步长取值(反切)
# 格式:str[倒序的首标:倒序的尾标:步长(倒序步长一定为负)]
# 注:反切,步长一定为负
# 注:取出来的str是倒序!!!
# 注:反切,切片的首标(正切的尾是此时反切的头)规定一定要倒着数,即从-1开始往左数 ! ! !
# 注:反切,尾标既可正数也可倒着数,但是数出来后都要往尾的方向顺延1位(反切,向左顺延)
# 注:仍是顾首不顾尾(尾要向尾的方向顺延1位);
s1 = 'python全栈22期'
# s2 = s1[-1:-6:-1]
# print(s2) # "期22栈全" (倒序) # 首标必须倒数,尾标可正可倒,最后都要往尾的方向顺延1位(反切,向左顺延,因为反向切片的尾在左边)
# s3 = s1[-1:5:-1]
# print(s3) # "期22栈全" (倒序) # 尾标正数,全从左0向右数是6,再向反切切片尾的方向顺延1(反切,尾向左顺延),即为5.
# 本题小结:a.不管尾标正数还是倒着数,数出来下标后,尾都要往切片尾的方向顺延1位(反切,向左顺延).
# b.反切的头标规定只能倒着数,即从-1开始往左数,尾标既可正数又可倒数,根据尾元素离哪头近来决定.
s1 = 'python全栈22期'
# s4 = s1[-4:-6:-1]
# print(s4) #"栈全" # 首标必须倒着数,反切切片的尾标:倒数为-5,再向切片的尾顺延1位为-6(反切,向左顺延)
# s5 = s1[-4:5:-1]
# print(s5) #"栈全" # 首标必须倒着数,反切切片的尾标:正数为6,再向切片的尾顺延1位为5(反切,向左顺延)
# 反切全取
s1 = 'python全栈22期'
# s6 = s1[::-1]
# print(s6) # 期22栈全nohtyp # 仅此一种取法
# 注:全切规定首尾都为空,但步长一定为负值!
#思考题:倒序全部取出来?
# s10 = s1[-1:-12:-1]
# print(s10)------取出"期22栈全nohtyP" 注:倒序的首是期,期的下标是-1,则倒序的尾p的下标为-11加1=-12(即从-1往后数,想坐标轴)
# 小结:4种取值方式---注意事项汇总
# a:按索引取,头是0,尾是-1;每个元素均既可正数又可倒着数;
# b:按切片取,只有正切; 首标尾标也是 均既可正数又可倒着数;全切,头尾都是空(规定);
# c.按切片步长取,只有正切,步长为正; 首标尾标既可正数又可倒着数; 全切,头尾都是空[::2],步长自定;
# d.按反向步长取(即反切),只有反切,步长一定为负; 切片的首标只能倒着数(从-1往左数),尾标可正可倒;全切,头尾都是空[::-2],步长自定;
# 注:切片,切片步长,反向切片步长取值,都是顾首不顾尾,尾都要向尾的方向顺延1位。(正切:尾标往右顺延;反切:尾标往左顺延)
# 小结:str,list,tuple 都有索引,切片;python中用的最多的3种数据类型是,使用频率:dict > list >str
5.str的9种常用操作方法(2对+7个):
- 这2对+7个均不会对原字符串进行任何操作,都是产生一个新的字符串
- 记忆口诀:7个的"换去分格数加十"
- 写在前面: 9种操作,均要对其操作进行赋值再打印,才能更改;或者直接打印操作,才能更改.(因为修改后的会形成1个新的str,跟原来的str没关系)
# 1.upper lower(第一对)
# 作用:达到不区分大小写的目的
# 应用:当用户输入验证码时可达到不区分大小写的目的(见下面eg)
# 格式:"字符串.upper()"或"变量.lower()"
s = 'taiBAifdsa'
# s1 = s.upper()
# print(s1,type(s1)) # TAIBAIFDSA
# s2 = s.lower() # taibaifdsa
# print(s2)
# 应用:
# username = input('请输入用户名')
# password = input('请输入密码')
# code = 'QweA' #------------------为了让用户不管输入大写还是小写都能通过验证!
# print(code)
# your_code = input('请输入验证码:不区分大小写')
# if your_code.upper() == code.upper(): #应用它! #用upper或者lower都能达到目的.
# if username == '太白' and password == '123':
# print('登录成功')
# else:
# print('用户名密码错误')
# else:
# print('验证码错误')
# 2.startswith endswith(第二对)
# 作用:判断str是否以(某元素)开始,是否以(某元素)结束;返回True False
# 格式:字符串.startswith("某元素")
# 应用:
# s = 'taiBAifdsa'
# print(s.startswith('t')) # True
# print(s.startswith('taiBAi')) # True
# # 了解:
# print(s.startswith('B',3,6)) # True 不懂
#
# s = 'taiBAifdsa'
# print(s.endswith('a')) # True
# print(s.endswith('BAifdsa')) # True
# 3.replace
# 作用:替换
# 格式:"字符串.replace("old变量","new变量",替换次数)"------注:若不输入次数,则默认全部替换
msg = 'alex 很nb,alex是老男孩教育的创始人之一,alex长得很帅'
# msg1 = msg.replace('alex','太白') # 默认全部替换
# print(msg1)
# msg2 = msg.replace('alex','太白',2) # 只替换从左数的前两个alex
# print(msg2)
# 4.strip
# 作用:去除" "里的空白或\t(空格符)和\n(换行符) #只能去前后的.中间的去不了.eg:"5+ 7"就不行.
# 格式:"字符串.strip()"
# s1 = ' 太白\t\n'
# print(s1) # 通过鼠标去看哪有空格
# s2 = s1.strip()
# print(s2)
# 了解:
# 可以去除指定的字符
# s4 = 'rre太r白qsd'
# s5 = s4.strip('qrsed') # 太r白 #()是要去掉的字符
# print(s5)
# 5.split 分割符 ***(重要!)
# 作用:将一个str分割为list
# 格式:a.默认分隔符:"字符串.split("")"用空格划分(但前提是原str里有空格)
# b.指定分隔符:"字符串.split("字符串里含有的符号or元素")"-->代表将这个str用这个指定的符号or元素划分,分割后是list !!!
# str ---> list
# s6 = '太白 女神 吴超'
# print(s6.split(' ')) # ['太白', '女神', '吴超']
# s7 = '太白:女神:吴超'
# print(s7.split(':')) # ['太白', '女神', '吴超']
# 注:分割出来就已是个list!!!
# 了解:
# s8 = ':barry:nvshen:wu'
# print(s8.split(':')) # ['', 'barry', 'nvshen', 'wu']
# print(s8.split(":",2)) # 只分割自左至右的前2个 # ['', 'barry', 'nvshen:wu']
# 6.join 非常好用
# 作用: 将list(所有元素必须都是str) 或str里的元素用某个符号串起来
# 格式:"某符号".join(str或list)
# 前提:列表里面的元素必须都是str类型,才可加
# s1 = 'alex'
# s2 = '+'.join(s1) # 用"+"把字符串"alex"的各元素加起来
# print(s2,type(s2)) # a+l+e+x
# l1 = ['太白', '女神', '吴超']
# s3 = ':'.join(l1) # 用":"把list['太白', '女神', '吴超']里的各元素加起来
# print(s3) # 太白:女神:吴超
# 7.count
# 作用: 数某个字符在这个str中出现的次数
# s8 = '我是hhhs呀'
# print(s8.count('h')) # 3
# print(s8.count('hs')) #也可是多个字符
# 8.format: 格式化输出-----跟%s作用相同,但用法不同
# 第一种用法:{}相当于%s
# msg = '我叫{}今年{}性别{}'.format('大壮',25,'男') # 要一一对应
# print(msg)
# 第二种用法:按索引格式化
# msg = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('大壮', 25,'男') # 要一一对应,但最后一个不用写
# print(msg)
# 第三种用法:给变量赋值格式化 #指名道姓去填充
# 注: .format()的括号里给变量赋值的顺序可以乱序
# a = 100
# msg = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='大壮') # 可乱序
# print(msg)
# 9.is 系列:
# 作用:判断str是否由整数组成等等(返回true false)
# is 系列:
# name = 'taibai123'
# print(name.isalnum()) #字符串是否由字母or数字or中文(漏洞)组成
# print(name.isalpha()) #字符串是否 只由字母or中文(漏洞)组成,字母+中文都是true
# print(name.isdecimal()) #字符串是否 只由十进制组成 # 常用! 重要!!!
# 注:name = '100①' #isdigit()见到①,也视为数字.-不报错(漏洞:①是符号,不是数字)
# 应用:
# s1 = input('请输入您的金额:')
# if s1.isdecimal(): # 判断输入的金额是否只由整数(整型int)组成
# print(int(s1))
# else:
# print('输入有误')
# 注:忘记单词咋写时,可以在pycharm中,通过用数据类型把变量包起来的方法去查看这种数据类型的多种使用方法 eg:a = "taibai" , 通过str(a). 来查看str的多种使用方法
6.for循环
可迭代对象:
- 凡是可迭代对象,均可遍历
- 除了int,bool不可遍历;其他数据类型(str list tuple dict set)均可遍历,叫可迭代对象;range()也是可迭代对象
坑:
若print与for平齐,则只打印可迭代对象的最后一个元素
s = "taibai667" for i in s: # print(i) # ... #...和pass用法一样,都是占位符(过) pass print(i) #7 打印的只是str的最后1个元素
二进制与十进制的转化,bool str int 之间的转化,str的常用操作,的更多相关文章
- string,char*,int 之间的转化
c++中经常遇到string,char*,int之间的相互转化,今天就来整理一下. 以下是转载并修改的内容: 以下是常用的几种类型互相之间的转换 string 转 int先转换为char*,再使用at ...
- C# Enum,Int,String,之间及bool与int之间的转换
枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值. Enum 提供一些实用的静态方法: (1)比较枚举类的实例的方法 (2)将实例的值转换为其字符串表示形式的方法 (3)将数字的 ...
- Java中List、integer[]、int[]之间的转化
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.functio ...
- Swift_ios_二进制,十进制,十六进制之间的转换
这里所说的转换,并不是Swift中字面量之间的转换.如果是字面量之间的转换,ios系统中已经自动帮我们转换了. 例如let number1:Int = 8let number2:Int = 0b100 ...
- Java入门:基础算法之二进制转换为十进制
Java有两种方法可以将二进制数转换为十进制数: 1)使用Integer类的Integer.parseInt()方法. 2)自己编写转换逻辑. 方法1:使用Integer.parseInt()实现二进 ...
- 十进制二进制之间的转化 PHP算法
[ 十进制转二进制 ] function test($var){ $func = function($i){ if($i < 2){ return $i; } $return['int'] = ...
- [参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)
第1节 ASCII码对照表 1.1 ASCII控制字符 1.2 ASCII可显示字符 第2节字符的进制转换 2.1 获取字符(8位)的上四位和下四位 2.2 获取字符(上表中的‘图形’)所对应的十六进 ...
- 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用
进制转换: 二进制转十进制: 0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...
- 怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结
转至:https://blog.csdn.net/erlian1992/article/details/47342189 最近一直在看全国计算机三级网络技术这本书,看到第二章的时候,不免会遇到计算机中 ...
随机推荐
- 【node.js web项目】解决路由默认是hash模式(带#)
[概念讲述] 1.什么是hash模式 Vue+WebPack项目,本身是一个单页应用. vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 ...
- IDEA创建Maven工程依赖jar包爆红问题
使用IDEA创建maven工程后,在pom.xml文件中添加jar包坐标依赖后报错, 如图:
- struts2配置 匹配原则 配置各项默认
struts开发流程 1,引入jar包 2,配置web.xml 3,开发action类 4,配置struts.xml 版本: 2.3 引入jar文件 commons-fileupload-1.2. ...
- Codeforces 667B Coat of Anticubism
链接:传送门 题意:题目balabala说了一大堆,然而并没什么卵用,给你n个数,将这个集合分割成两部分,构成三角形的两个边,让你求补充的那个边最短是多长 思路:三角形三边具有 a + b > ...
- [COCI2007]PRAVOKUTNI
题目大意:在一个平面上,有\(N\)个点,求这些点构成的直角三角形个数.解题思路:枚举直角顶点,对于每个点,将这个点当做原点,对其他点按极角排序,然后双指针扫一遍,判断弧度差即可. C++ Code: ...
- 安装虚拟机和Linux系统
- 安装虚拟机 点击下载虚拟机 点击下载Linux系统 菜鸟网的Linux系统教程 1.安装虚拟机 在弹出的面板中选择标准--继续. 选择第二个选项,因为我们下载的光盘的镜像,所以直接选择刚才的dvd ...
- SVN提交代码时报405 Method Not Allowed
原因: 1.删除了某个文件夹,然后又创建了一个同名文件夹 2.之前执行过Add操作,但没上传代码,在电脑上提交了同路径的代码,再次上传时会报错 解决方法: 1. 删除出现错误的文件夹 2. SVN U ...
- WinServer-IIS-URL重写
WEB平台安装程序在Windows Server里面才有,在WIN7里面是没有的 然后在安装一个URL重写工具 然后再设置各种规则 来自为知笔记(Wiz)
- 学一下HDFS,很不错(大数据技术原理及应用)
http://study.163.com/course/courseMain.htm?courseId=1002887002 里面的HDFS这一部分.
- 一个通用Makefile的编写
作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的 ...