基本数据类型(int, bool, str)

1.1 python基本数据类型

1.int > 整数. 主要⽤来进⾏数学运算

2.str > 字符串 可以保存少量数据并进⾏相应的操作

3.bool>判断真假, True, False

4.list> 存储⼤量数据.⽤[ ]表⽰

5.tuple=> 元组, 不可以发⽣改变 ⽤( )表⽰

6.dict> 字典, 保存键值对, ⼀样可以保存⼤量数据

7.set> 集合 保存⼤量数据. 不可以重复. 其实就是不保存value的dict

1.2 整数(int)

在python3中所有的整数都是int类型. 但在python2中如果数据量比较⼤. 会使⽤long类型.

在python3中不存在long类型

整数可以进⾏的操作:

bit_length(). 计算整数在内存中占⽤的⼆进制码的⻓度

  1. a = 5
  2. print(a.bit_length())
  3. 输出结果为3

1.3 布尔值(bool)

取值只有True, False. bool值没有操作.

转换问题:

  1. str => int int(str)
  2. int => str str(int)
  3. int => bool bool(int). 0False 0True,空字符串""False" "有空格字符串为True
  4. bool=>int int(bool) True1, False0
  5. str => bool bool(str) 空字符串是False, 不空是True
  6. bool => str str(bool) bool值转换成相应的"值"

None 表示空,真空,所有的空都是False,所有的费控都是True

想把某数据类型转换成xxx数据类型,xxx(数据)

  1. while 1:#死循环
  2. print("人才")
  3. while True:#死循环
  4. print("人才")

第一种死循环速度要比第二种快,因为计算机只识别01,第二种还要将True转换为数字

1.4 字符串(str)

把字符连成串. 在python中⽤', ", ''', """引起来的内容被称为字符串

字符串是不可变的数据类型,无论你执行任何操作,源字符串是不会改变的

1.4.1 索引和切片

索引. 索引就是下标. 切记 下标从0开始

  1. # 0123456 7 8
  2. s1 = "python最⽜B"
  3. print(s1[0]) # 获取第0个
  4. print(s1[1])
  5. print(s1[2])
  6. print(s1[3])
  7. print(s1[4])
  8. print(s1[5])
  9. print(s1[6])
  10. print(s1[7])
  11. print(s1[8])
  12. # print(s1[9])# 没有9, 越界了. 会报错
  13. IndexError: string index out of range
  14. print(s1[-1]) # -1 表示倒数.
  15. print(s1[-2]) # 倒数第⼆个

1.4.2 切片

切片, 我们可以使⽤下标来截取部分字符串的内容

语法: str[start: end]

规则: 顾头不顾腚 从start开始截取. 截取到end位置. 但不包括end

  1. # 0123456 7 8
  2. s2 = "python最⽜B"
  3. print(s2[0:3]) # 从0获取到3. 不包含3. 结果: pyt
  4. print(s2[6:8]) # 结果 最⽜
  5. print(s2[6:9]) # 最⼤是8. 但根据顾头不顾腚, 想要取到8必须给print(s2[6:10]) # 如果右边已经过了最⼤值. 相当于获取到最
  6. print(s2[4:]) # 如果想获取到最后. 那么最后⼀个值可以
  7. print(s2[-1:-5]) # 从-1 获取到 -5 这样是获取不到任何结果的. 从-1向右数. 你怎么数也数不到-5
  8. print(s2[-5:-1]) # ⽜b, 取到数据了. 但是. 顾头不顾腚. 怎么取最后⼀个呢?
  9. print(s2[-5:]) # 什么都不写就是最后了
  10. print(s2[:-1]) # 这个是取到倒数第⼀个
  11. print(s2[:]) # 原样输出

特点总结:1.顾头不顾尾,2.只能从左往右切(默认情况)

给出第三个参数来控制方向,第三个参数叫步长

  1. print(s2[-1:-3:-1]) #表示反方向,从右往左切,结:B牛
  2. print(s2[1:5:2]) # 从第⼀个开始取, 取到第5个,每2个取1个, 结果: yh, 分析: 1:5=> ytho => yh
  3. print(s2[:5:2]) # 从头开始到第五个. 每两个取⼀个
  4. print(s2[4::2]) # 从4开始取到最后. 每两个取⼀个
  5. print(s2[-5::2]) # 从-5取到最后.每两个取⼀个
  6. print(s2[-1:-5]) # -1:-5什么都没有. 因为是从左往右获取的.
  7. print(s2[-1:-5:-1]) # 步⻓是-1. 这时就从右往左取值了
  8. print(s2[-5::-3]) # 从倒数第5个开始. 到最开始. 每3个取⼀个, 结果oy

步⻓: 如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1

1.4.3 字符串操作

字符串的相关操作⽅法

切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的

⼤⼩写转来转去

  1. # 把首字母变成大写
  2. s = "yang is a gay"
  3. s1 = s.capitalize()
  4. print(s1)
  5. 输出为:Yang is a gay
  6. # 全部转换为小写
  7. s = "alex is a gay and Wusir is A gay too"
  8. s1 = s.lower()
  9. print(s1)
  10. 输出为:alex is a gay and wusir is a gay too
  11. # 全部转换为大写(重点记住这个)
  12. s = "alex is a gay and Wusir is A gay too"
  13. s1 = s.upper()
  14. print(s1)
  15. 输出为:ALEX IS A GAY AND WUSIR IS A GAY TOO
  16. # 大小写互换
  17. s = "alex is a gay and Wusir is A gay too"
  18. s1 = s.swapcase()
  19. print(s1)
  20. 输出为:ALEX IS A GAY AND wUSIR IS a GAY TOO
  21. # 转成小写
  22. ret = s1.casefold() # 转换成⼩写, 和lower的区别: lower()对某些字符⽀持不够好.
  23. casefold()对所有字⺟都有效. ⽐如东欧的⼀些字⺟
  24. print(ret)
  25. s2 = "БBß" # 俄美德
  26. print(s2)
  27. print(s2.lower())
  28. print(s2.casefold())
  29. 输出为:
  30. БBß
  31. бbß
  32. бbss
  33. # 每个被特殊字符隔开的字⺟⾸字⺟⼤写
  34. s3 = "alex eggon,taibai*yinwang_麻花藤"
  35. ret = s3.title() # Alex Eggon,Taibai*Yinwang_麻花藤
  36. print(ret)
  37. # 中⽂也算是特殊字符
  38. s4 = "alex⽼男孩wusir" # Alex⽼男孩Wusir
  39. print(s4.title())

切来切去

  1. # 居中
  2. s = "sb"
  3. s1 = s.center(10,"*") # 拉⻓成10, 把原字符串放中间.其余位置补*
  4. print(s1)
  5. # 更改tab的⻓度
  6. s6 = "alex wusir\teggon"
  7. print(s6)
  8. print(s6.expandtabs()) # 可以改变\t的⻓度 默认⻓度更改为8
  9. # 去空格
  10. s7 = " alex wusir haha "
  11. ret = s7.strip() # 去掉左右两端的空格
  12. print(ret)
  13. ret = s7.lstrip() # 去掉左边空格
  14. print(ret)
  15. ret = s7.rstrip() # 去掉右边空格
  16. print(ret)
  17. # 应⽤, 模拟⽤户登录. 忽略⽤户输⼊的空格
  18. username = input("请输⼊⽤户名:").strip()
  19. password = input("请输⼊密码: ").strip()
  20. if username == 'alex' and password == '123':
  21. print("登录成功")
  22. else:
  23. print("登录失败")
  24. s7 = "abcdefgabc"
  25. print(s7.strip("abc")) # defg 也可以指定去掉左右两边的abc
  26. # 字符串替换
  27. s8 = "sylar_alex_taibai_wusir_eggon"
  28. ret = s8.replace('alex', '⾦⻆⼤王') # 把alex替换成⾦⻆⼤王
  29. print(s8) # sylar_alex_taibai_wusir_eggon 切记, 字符串是不可变对象. 所有操作都是产⽣新字符串返回
  30. print(ret) # sylar_⾦⻆⼤王_taib
  31. ret = s8.replace('i', 'SB', 2) # 把i替换成SB, 替换2个
  32. print(ret) # sylar_alex_taSBbaSB_wusir_eggon
  33. # 字符串切割
  34. s9 = "alex,wusir,sylar,taibai,eggon"
  35. lst = s9.split(",") # 字符串切割, 根据,进⾏切割
  36. print(lst)
  37. s10 = """诗⼈
  38. 学者
  39. 感叹号
  40. 渣渣"""
  41. print(s10.split("\n")) # ⽤\n切割
  42. # 坑
  43. s11 = "银王哈哈银王呵呵银王吼吼银王"
  44. lst = s11.split("银王") # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右两端. 那么⼀
  45. 定会出现空字符串.深坑请留意
  46. print(lst)

1.4.4 格式化输出

  1. s = "我叫%s, 我今年%s了, 我喜欢%s" % ("周杰伦", "40", "昆凌")
  2. print(s)
  3. s = "我叫{}, 我今年{}了, 我喜欢{}".format("周杰伦", "40", "昆凌") #括号里的值顺序是死的
  4. print(s)
  5. s = "我叫{0}, 我今年{1}了, 我喜欢{2}".format("周杰伦", "40", "昆凌") #可以定义括号里面值的顺序
  6. print(s)
  7. s = "我叫{name}, 我今年{age}了, 我喜欢{hobby}".format(hobby="周杰伦", age="40", name="昆凌") #指定值
  8. print(s)

1.4.5 查找

  1. s = "alex is a gay"
  2. print(s.startswith("tory")) # 以xxx开头
  3. print(s.endswith("girl")) # 以xxx结尾
  4. s = "I have a dream. I want to kill you!"
  5. 都可以进行索引范围
  6. print(s.count("a")) # 计算a在字符串中出现的次数
  7. print(s.find("a")) # 查找xxx在字符串中出现的位置. 只找第一次出现的位置, 没有就返回-1
  8. print(s.index("z")) # 当字符串不存在的时候. 报错

1.4.6 判断

  1. s = "abcdefg1@"
  2. print(s.isdigit()) # %dprint(s.isalpha()) # 字母
  3. print(s.isalnum()) # 是否由数字和字母组成
  4. s = "壹仟贰佰五十六萬拾"
  5. print(s.isnumeric())
  6. 字符串长度, python的内置函数len(), int(), bool(), str(), type()
  7. s = "娃哈哈可口可乐"
  8. print(len(s)) # 字符串中的字符的个数

1.4.7 for迭代

  1. s = "王小利刘能赵四"
  2. # 对字符串进行遍历.
  3. n = 0
  4. while n < len(s):
  5. print(s[n])
  6. n = n + 1
  7. # 迭代
  8. for c in s: # charactor
  9. print(c)

1.5 练习题

有变量name="aleX leNb" 完成如下操作:

1.移除name变量对应的值两边的空格,并输出处理结果

  1. s1 = name.strip()
  2. print(s1)

2.移除name变量左边的"al"并输出处理结果

  1. s2 = name.lstrip("al")
  2. print(s2)

3.移除name变量右边的"Nb",并输出处理结果

  1. s3 = name.rstrip("Nb")
  2. print(s3)

4.移除name变量开头的"a"与最后的"b"并输出处理结果

  1. s4 = name.strip("a").strip("b")
  2. print(s4)

第2章 python入门的更多相关文章

  1. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  2. 第1章 python入门

    1.1 python的出生与应用   python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开 ...

  3. Python之旅_第一章Python入门

    一.编程语言分类 1.机器语言:即计算机能听懂的二进制语言,0000 0001,直接操控硬件: 2.汇编语言:简写的英文标识符代替二进制语言,本质同样是直接操控硬件: 3.高级语言:用更贴近人类的语言 ...

  4. 第二章.python入门

    2.1环境的安装 解释器:py2和py3 添加环境变量的作用:便于找到python解释器 开发工具:pycharm 2.2编码 2.2.1编码基础 ascii:只表示英文,8位表示一个元素,pytho ...

  5. 第一章 Python入门

    一. 语言 计算机语言:人和计算机之间沟通的语言计算机语言: 按照级别分类:(越高级月进阶人类) 机器语言: 汇编语言: 助记符 ag. add 2 3 高级语言: c, PHP, java , .n ...

  6. Python入门教程(2)

    人生苦短,我玩蛇0.0! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...

  7. Python入门教程(1)

    人生苦短,我用Python! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于19 ...

  8. Python学习 之 Python入门

    第二章 Python入门 2.1 环境安装 2.1.1 下载解释器: py2.7.16 (2020年官方不再维护) py3.6.8 (推荐安装) 1.下载解释器一定去官网下载,https://www. ...

  9. 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...

随机推荐

  1. flask的jinja2过滤器使用:遍历索引指定标签class属性,实现样式变化

    在flask项目中实现上图效果,采用使用自定义过滤器的形式对 span 标签的 class 指定. 1.定义过滤器 # common.py def do_index_class(index): &qu ...

  2. 一步步分析Java深拷贝的两种方式-clone和序列化

    今天遇到一道面试题,询问深拷贝的两种方法.主要就是clone方法和序列化方法.今天就来分析一下这两种方式如何实现深拷贝.如果想跳过解析的朋友,直奔"重点来了!"寻找答案. clon ...

  3. AbstractQueuedSynchronizer 源码解读(转载)

    转载文章,拜读了一下原文感觉很不错,转载一下,侵删 链接地址:http://objcoding.com/2019/05/05/aqs-exclusive-lock/ Java并发之AQS源码分析(一) ...

  4. Map对象,Set对象使用(1)

    Map对象:包含所有类型.可以是对象,函数,或字符串等,本质上是键值对的集合 let m = new Map(); let keyarr = [1,23,"发广告"]; let k ...

  5. 【计算机视觉】深度相机(四)--Realsense概览

    本文参考下文,做一点个人使用补充. http://blog.csdn.net/app_12062011/article/details/52662143 转自: http://blog.csdn. ...

  6. vue-cli3创建vue项目之vue.config.js配置

    module.exports = { // 基本路径 publicPath: '/', // 输出文件目录 outputDir: 'dist', // eslint-loader 是否在保存的时候检查 ...

  7. lua语法介绍(二)

    一.语法简要 在学习任何语法之前,我们都需要知道该门语言是怎样定义的,是怎样运行的,话说白了,就是到了人家的山头得唱人家山头的歌.下面介绍lua的语法 1.变量的定义 特点: 1.变量在使用前必须声明 ...

  8. DOS命令学习

    DOS命令学习 一.DOS使用常识 DOS的概况 DOS(Disk Operating System)是一个使用得十分广泛的磁盘操作系统,就连眼下流行的Windows9x/ME系统都是以它为基础. 常 ...

  9. 考研路茫茫——空调教室HDU2242(Tarjan缩点)

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=2242 给你一个图,问你缩完点树上割边的做小绝对值差. 思路: 这题核算起来整整做了我一天(即24个小时)! ...

  10. StorageClass-动态PVC

    StorageClass 之前我们部署了PV 和 PVC 的使用方法,但是前面的 PV 都是静态的,什么意思?就是我要使用的一个 PVC 的话就必须手动去创建一个 PV,我们也说过这种方式在很大程度上 ...