博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础知识笔记(三)
阅读量:5097 次
发布时间:2019-06-13

本文共 7067 字,大约阅读时间需要 23 分钟。

一. 基础数据类型

      基础数据类型有以下几种:

             整数(int)    

             字符串(str)    

             布尔值(bool)

             列表(list)

             元组(tuple)

             字典(dict)

             集合(set)

二. 整数—— int

        这里主要熟悉二进制与十进制之间的对应关系与相互转化的方法:

            1). 二进制与十进制的关系

                    

                  i = 4

                  print(i.bit_length())          # 3
                  # 获取十进制转化成二进制的有效位数
                  二进制             十进制
                  0000 0100           4
                  # 这里二进制中的 100 即是有效位数

              2). 二进制与十进制之间的转化

               

                  二进制转化成十进制

                  示例:
                  二进制 0010 1101
                  0             0             1             0             1             1             0             1
                  0*2**7 + 0*2**6 + 1*2**5 + 0*2**4 + 1*2**3 + 1*2**2 + 0*2**1 + 1*2**0
                 十进制结果就是上面这行所有乘积的和
                 十进制转化成二进制
                  方法:对2取余 逆向排列
                  比如十进制数 42
                  除法         商        余数
                  42/2         21          0
                  21/2         10          1
                  10/2         5            0
                  5/2           2           1
                  2/2           1           0
                  1/2           0           1
                  这里不够8位,直接补0即可,所以42对应的二进制(逆向排序)是 00101010
                  PS:前面的两个 0 是补上去的.

         补充:

1 a = int("    56 ")2 b = int("56")3 c = int(" 5   6")4 5 print(a)    # 566 print(b)    # 567 print(c)    # 报错

 

三. 字符串—— str

1. 字符串的索引与切片

1 # 注意:字符串的切片索引以及常用操作方法,都是形成新的字符串,与原来的字符串没有关系2 3 s = [1, 2, 3]4 s1 = s[0]5 print(s == s1)   # False

 

1 s = "12345678" 2  3 s[-2::-2] 4  5 # 这种题首先看最后一个,是 -2, 即负数 6 # 所以首尾要颠倒,即从右往左数 7 # 再看第一个数是 -2,这里所指的是 7 8 # 就是说从 7 开始往左执行切片操作 9 # 然后中间没写什么,代表一直从 7 到 1 取片10 # 最后 步长是 2, 所以结果就是 "7531"11 12 s[-2:-1:-1]13 # 按照上面步骤,从 7 开始往左取片14 # 但是 -1 指的是 8 ,8 在 7 的右边,7 往左永远与 8 没关系15 # 因此这个的结果是 "", 即空字符串,取不到任何东西16 17 s[-2:7:-1]18 # 仔细观察发现其实这个和上面的 s[-2:-1:-1]是一样的19 # 即 7 指的也是从左往右索引号是 7 对应的值,即 820 21 s[-2:0:0]22 # 这里步长是0 ,所以不看前面就知道会报错23  24 s[-2:-9:-2]25 # 结果也是 "7531"26 # s[-2:-100:-2] 也是一样2728 # 另外,时刻记住一点:顾头不顾尾!

 

2. 字符串常用方法:

1). capitalize() 与 title() —— 首字母大写与所有单词的首字母大写

 

1 s = 'alex wusir9Taibai$xiaoHu' 2  3 # capitalize() — 第一个单词的首字母大写,其他单词都是小写(!!!) 4 s3 = s.capitalize()   5 # Alex wusir9taibai$xiaohu 6  7 # 如果该字符串的第一个字符不是字母,那么capitalize() 就没起作用了 8 s = "7#dakj$kdjl(dkak)dka" 9 s.capitalize()  10 # 7#dakj$kdjl(dkak)dka11 12 13 # title()— 非字母隔开的每个单词的首字母大写14 s = 'alex wusir9Taibai$xiaoHu'15 s4 = s.title()         16 # Alex Wusir9Taibai$Xiaohu

2). center() —— 将字符串居中

1 s = "居中"2 3 s5 = s.center(20)4 s6 = s.center(20, "*")5 6 print(s5)    #          居中         7 print(s6)    # *********居中*********8 9 # 可以设置总长度,可以设置填充物

3). swapcase() —— 字母大小写翻转

1 s = 'TAiBai'2 3 s7 = s.swapcase()4 print(s7)   # taIbAI

4). upper() 与 lower() —— 单词全部大小写

1 s = 'taibaiJInXing' 2  3 s8 = s.upper() 4 s9 = s.lower() 5  6 print(s8)    # TAIBAIJINXING 7 print(s9)    # taibaijinxing 8  9 # 这两种用法可以用在比如验证码之类10 11 username = input('请输入姓名:')12 password = input('请输入密码:')13 code = 'AeTrd'.upper()14 your_code = input('请输入验证码:').upper()  # 这里是关键点15 16 if your_code == code:17     if username == 'alex' and password == '123':18         print('登录成功')19     else:20         print('用户名或者密码错误')21 else:22     print('验证码不正确')

5). startswith() 与 endswith() —— 判断是否以某些元素开始或结束

1 s = 'alexeaaa'2 3 print(s.startswith('a'))      # True4 print(s.startswith('alex'))  #  True5 print(s.startswith('e',2,))  #  True    # 可切片

6). find() 与 index() —— 在字符串中查找某元素是否存在及存在的位置(从0开始计数)

1 s = 'taibaijinxing' 2  3 print(s.find('a'))       # 1 4 print(s.find('a',2,))   # 4 5 print(s.find('X'))       # -1 6 print(s.index('X'))     # 报错 7  8 # find() —— 通过元素找索引,找到第一个就返回(可切片),找不到返回-1 9 # index() —— 通过元素找索引,找到第一个就返回(可切片),找不到报错10 # 通过比较可知,能用 find() 就用它,以免使用 index() 时引起不必要的报错

7). strip() —— 默认去除字符串前后两端的空格,换行符及制表符

1 name='*barry**' 2  3 print(name.strip('*'))      # barry 4 print(name.lstrip('*'))     # barry** 5 print(name.rstrip('*'))     # *barry 6  7 # 在程序的应用场景一般是用户对于验证码的输入 8 # 因为验证码输入大小写都是可以的,所以程序必须判定只要内容相同,用户的输入就可以通过 9 10 # 应用举例:11 username = input('请输入姓名:').strip()12 password = input('请输入密码:').strip()13 if username == 'alex' and password == '123':14     print('登录成功')15 else:16     print('用户名或者密码错误') 17 18 以后用 input()用法时后面一定要加个 .strip()

8). split() —— 以某条件分割,最终形成一个不含有这个分割符的元素的列表

                     (字符串转化为列表的方法)

1 # 默认以空格分割 2  3 s = 'wusir alex taibai' 4 ss = 'wusir:alex:taibai' 5 sss = 'taibai:alex:wusir:xiaohu:日天' 6 ssss = ':wusir:alex:taibai' 7  8 s10 = s.split()               # ['wusir', 'alex', 'taibai'] 9 s11 = ss.split(":")          # ['wusir', 'alex', 'taibai']10 s12 = sss.split(":", 1)     # ['taibai', 'alex:wusir:xiaohu:日天']11 s13 = ssss.split(":")       # ['', 'wusir', 'alex', 'taibai']12 13 # 由 s13 可知分割出的元素要比分隔符数+1 14 # rspilt()—— 从右到左分割 15 s = "alex wusir ritian" 16 print(s.split(" ", 1))      # ["alex", "wusir ritian"] 17 print(s.rsplit(" ", 1))     # ["alex wusir", "ritian"] 18 # 注意看结果对比 19 20 # 注意使用 split()默认以空格分隔 与 split(" ")(里面一个空格)的区别 21 s = "alex   taibai" 22 print(s.split())    # ['alex', 'taibai'] 23 print(s.split(" ")) # ['alex', '', '', 'taibai'] 24 # 可以看出,split() 使用默认方式会把元素之间的所有空格当成一个空格来分割 25 # 而如果在括号里指定以多少个空格来分割的话就会出现问题

 9). join()

1 # 这种方法可以用于 列表转变成字符串  2 # 条件是必须全部都是字符串组成的列表 3  4 s = ['wusir', 'alex', 'taibai'] 5 ss = 'alex' 6 s14 = "_".join(ss) 7 s15 = " ".join(s) 8  9 print(s14)    # a_l_e_x10 print(s15)    # wusir alex taibai

10). replace()

1 s = 'Alex 是老男孩的创始人之一,Alex也是一个屌丝,Alex'2 s11 = s.replace('Alex', '日天', 1)3 4 print(s11)   # 日天 是老男孩的创始人之一,Alex也是一个屌丝,Alex

11). format 格式化输出

1 # 第一种方式: 2  3 s = '我叫{}, 今年{}, 性别{}'.format('小虎', 25, '女') 4 print(s)    # 我叫小虎, 今年25, 性别女 5  6 # 第二种方式 7 # 注意这里的用法 8  9 s = '我叫{0}, 今年{1}, 性别{2},我依然叫{0}'.format('小虎', 25, '女')10 print(s)    # 我叫小虎, 今年25, 性别女,我依然叫小虎11 12 # 第三种方式13 s = '我叫{name}, 今年{age}, 性别{sex},我依然叫{name}'.format(age=25, sex='女',name='小虎',)14 15 print(s)    # 我叫小虎, 今年25, 性别女,我依然叫小虎

12). is 系列

1 name = 'taibai123' 2 print(name.isalnum()) #字符串由字母或数字组成    # True 3 print(name.isalpha()) #字符串只由字母组成          # False 4 print(name.isdigit()) # 字符串只由数字组成           # False 5  6 # 注意在这里的用法 7 # 比如购物后付钱,要用户输入前,如果不小心输入"1000a",会报错,可以这样: 8 money = input('>>>') 9 if money.isdigit():10     money = int(money) 11 12 # 这里注意很奇怪的一点: 13 is.alpha() 这个用法只要是字母,中文,外文都是 True!!!

13). count() —— 计算字符串中某个字符出现的次数

1 s = 'fjdsklf;jdskafjdsaflsdfsdfsdafsdgsfda' 2  3 print(s.count('f'))        # 8 4 print(s.count('f',1,))     # 7 5  6 # 在 name = "Alex lxnb" 这个变量中,如何判断这个变量的前四位字母中关于 "l" 出现的次数? 7 # 方法一: 8 n = name[:4] 9 print(n.count("l"))  # 110 11 # 方法二:12 # 要算出现几次,首先想到 count 方法13 # 然后在 Pycharm 中输入 "count" 选中它,按 Ctrl 键,点击这个单词14 # 这时会跳出一个 py 文件,专门介绍 count 用法,然后发现可以这样:15 print(name.count("l", 0, 4)  # 1

14). len()

1 s = 'fdskafl12431   fdkslfjsdlfksjd' 2  3 print(len(s))    # 30 4  5 # 延申用法 6 s = "jasdjlk" 7 num1 = 0 8 while 1: 9     print(s[num1])10     num1 = num1 + 111     if num1 == len(s):12         break

15). 列表嵌套的一个小技巧

1 li = [1, 2, 3, [44, 55], 66]2 3 for i in li:4     if type(i) == list:5         for j in i:6             print(j)7     else:8         print(i)

 

# 把下面列表中66之前的数放到字典的键key1对应的值的列表中,把之后的数放到key2对应的值的列表中# 前提条件:前三行不能变# li = [11, 22, 33, 44, 55, 77, 88, 99]# dic = {}# for i in li:li = [11, 22, 33, 44, 55, 77, 88, 99]dic = {}for i in li:    if i < 66:        if "key1" not in dic:            dic["key1"] = [i]        else:            dic["key1"].append(i)    else:        if "key2" not in dic:            dic["key2"] = [i]        else:            dic["key2"].append(i)print(dic)# {'key1': [11, 22, 33, 44, 55], 'key2': [77, 88, 99]}# 还可以这样:li = [11, 22, 33, 44, 55, 77, 88, 99]dic = {}for i in li:    if i < 66:        if "key1" not in dic:            dic["key1"] = []        dic["key1"].append(i)    else:        if "key2" not in dic:            dic["key2"] = []        dic["key2"].append(i) print(dic)

 

转载于:https://www.cnblogs.com/shawnhuang/p/10156030.html

你可能感兴趣的文章
ArrayList对象声明& arrayList.size()
查看>>
并发编程 线程
查看>>
Mysql 解压安装
查看>>
Mysql
查看>>
前端html
查看>>
网络编程
查看>>
关于“设计模式”和“设计程序语言”的一些闲话
查看>>
(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
查看>>
python学习4 常用内置模块
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
ResolveUrl的用法
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
【转载】基于vw等viewport视区相对单位的响应式排版和布局
查看>>
<转>关于MFC的多线程类 CSemaphore,CMutex,CCriticalSection,CEvent
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>