zoukankan      html  css  js  c++  java
  • Python基础(三)

    今日主要内容

    • 整型
      • 范围
      • 进制转换
    • 字符串
      • 索引
      • 切片
      • 部分方法详解
    • for循环

    一、整型(int)

    (一)整型的范围

    • 32位:-2 ** 31 ~ 2 ** 31 -1
    • 64位:-2 ** 63 ~ 2 ** 63 -1

    (二)进制转换

    1. 十进制转换二进制:

      • 短除法:与2短除,除到商为0,从下向上取余

      • bin() 函数:将十进制数转换为二进制数

        num = 13
        print(bin(num))  # 1101
        
    2. 二进制转换十进制

      • 算术法:从右向左依次乘2的n次方(n为0,1,2,...),最后相加

      • int() 函数:其中第二个参数传入几进制数,第一个参数传入对应进制数

        num = "1101"
        print(int(num, 2))  # 13
        

    (三)不可变数据类型

    1. 什么是不可变/可变类型数据

      • 能在原地修改的数据是可变类型数据
      • 不能再原地修改的数据(修改就会开辟新的内存空间)是不可变类型数据
    2. 整型是不可变类型数据

    3. id() 函数:查看内存地址

      a = 10
      print(id(a))  # 1956675984
      a = a + 1
      print(id(a))  # 1956676016
      

    二、字符串(str)

    (一)索引

    1. 什么是索引?

      • 索引就是下标,python中索引是从0开始的
    2. 索引只给有序数据类型使用

    3. 索引的表示

      • str[下标]
    4. 正索引和反索引

      • 正索引:从左到右依次 0,1,2 ...
      • 反索引:从右到左依次 -1,-2,-3 ...
      a = "粪发涂墙的郭老湿"
      print(a[0])  # 粪
      print(a[3])  # 墙
      print(a[5])  # 郭
      print(a[-3])  # 郭
      
    • 注意:索引时,超出最大索引值会报错

      a = "粪发涂墙的郭老湿"
      print(a[10])  # IndexError: string index out of range
      

    (二)切片

    • 上面的例子,如果想要得到"粪发涂墙",只能挨个索引再进行拼接

      a = "粪发涂墙的郭老湿"
      a1 = print(a[0])
      a2 = print(a[1])
      a3 = print(a[2])
      a4 = print(a[3])
      print(a1 + a2 + a3 + a4)  # 粪发涂墙
      

      是不是很麻烦 ,可以利用切片

    1. 切片只给有序数据类型使用

    2. 切片格式

      • str[start: end: step]
      • 默认step为1
    3. 特点:顾头不顾腚

      • 从开头切片不用输入start;

        切到结尾不用输入end;

        从开头切到结尾都不用输入

      a = "粪发涂墙的郭老湿"
      mes = a[:4]  # 从开头切不用输入start
      print(mes)  # 粪发涂墙
      
      • step为步长,可以利用step间隔切片
      a = "粪发涂墙老污郭"
      print(a[::2])  # 粪涂老郭
      
      • 步长若为负数,则反向切片

        注意:若反向切片,start和end的位置是从后往前取的

      a = "粪发涂墙老污郭"
      print(a[::-2])  # 郭老涂粪
      print(a[-2:-6:-1])  # 污老墙涂
      
      
      • 将字符串反转可以利用切片
      a = "粪发涂墙老污郭"
      a_inversion = a[::-1]
      print(a_inversion)  # 郭污老墙涂发粪
      
      
    • 索引时,超出最大索引值不会报错

    (三)方法详解

    • str.upper() 全部变为大写
      str.lower() 全部变为小写
      str.startswith(n) 判断是否以n开头
      str.endswith(n) 判断是否以n结尾
      str.count(n) 计算n出现的次数
      str.strip() 去掉两端空格、 、
      str.split(n) 以n切割
      str.replace(old, new) 替换
      str.isalnum() 判断是否由数字、中文、字母构成
      str.isalpha() 判断是否由中文、字母构成
      str.isdigit() 判断是否由阿拉伯数字构成
      str.isdecimal() 判断是否由十进制数字构成
    1. str.upper()

      • 将字符串全部变为大写,只对字母生效,对其他不报错
      a = "zxdznb"
      new_a = a.upper()
      print(a)  # 不可变类型,原字符串不变
      print(new_a)  # ZXDZNB
      
      
    2. str.lower()

      • 将字符串全部变为小写,只对字母生效,对其他不报错
      a = "ZXDZNB"
      new_a = a.lower()
      print(a)  # 不可变类型,原字符串不变
      print(new_a)  # zxdznb
      
      
    • 应用:登录验证码,不区分大小写

      verify_code = "eF7d"
      while True:
      	user = input("账号:")
      	pwd = input("密码:")
      	while True:
      		print(f"验证码:{verify_code}")
      		vc = input("请输入验证码:")
      		if vc.upper() == verify_code.upper():  # 全部变为大写
      			break
      		else:
      			print("输入错误,请重新输入!")
      	if user == "ZXD" and pwd == "zxd123":
      		print("欢迎回来")
      		break
      	else:
      		print(”账号密码错误,请重新输入!“)
      
      
    1. str.startswith(n)

      • 判断字符串是否以参数n开头,输出为布尔值
      • 还可以判断切片的开头
      a = "zxdznb"
      print(a.startswith("z"))  # True
      print(a.startswith("x"))  # False
      
      print(a.startswith("x", 1, 5))  # True
      print(a.startswith("z", 1, 5))  # False
      
      
    2. str.endswith(n)

      • 判断字符串是否以参数n结尾,输出为布尔值
      • 还可以判断切片的结尾
      a = "zxdznb"
      print(a.endswith("b"))  # True
      print(a.endswith("x"))  # False
      
      print(a.endswith("n", 1, 5))  # True
      print(a.endswith("z", 1, 5))  # False
      
      
    3. str.count(n)

      • 计算参数n在字符串中出现的次数
      • 还可以切片计算变量n出现的次数
      a = "zxdznb"
      print(a.count("z"))  # 2
      
      print(a.count("z", 0, 3))  # 1
      
      
    4. str.strip()

      • 默认去掉字符串两端空格、换行符( )、制表符( )
      • 也可以去掉指定内容
      a = "   zxdznb   "
      a1 = a.strip()
      print(a1)  # zxdznb
      
      a2 = a1.strip("b")
      print(a2)  # zxdzn
      
      
    • 应用:去掉用户输入账号密码时,手误多打的空格

      while True:
      	user = input("账号:").strip()
      	pwd = input("密码:").strip()
      	if user == "ZXD" and pwd == "zxd123":
      		print("欢迎回来!")
      		break
      	else:
      		print("账号密码错误,请重新输入")
      
      
    1. str.split()

      • 默认以空格、换行符( )、制表符( )切割字符串,得到的是一个列表,
      • 也可以指定字符切割
      • 还可以填入第二个参数,可以指定切割次数
      a1 = "zxd znb"
      lst1 = a1.split()
      print(lst1[0], lst1[1])  # zxd znb
      
      a2 = "zxd,znb"
      lst2 = a2.split(",")
      print(lst2[0], lst2[1])  # zxd znb
      
      a3 = "xdznbznb"
      lst3 = a3.split("z", 1)
      print(lst3[0], lst3[1])  # xd nbznb
      
      
    2. str.replace(old, new)

      • 将字符串中的字符替换成新字符
      • 可以指定替换次数,默认全部替换
      a = "zxdhnbhnb"
      new1_a = a.replace("h", "z")
      print(new1_a)  # zxdznbznb  # 全部替换
      
      new2_a = a.replace("h", "z", 1)
      print(new2_a)  # zxdznbhnb  # 替换一次
      
      
    3. str.isalnum()

      • 判断字符串是否由数字、中文、字母组成
      a1 = "zxd666"
      a2 = "zxd_666"
      print(a1.isalnum())  # True
      print(a2.isalnum())  # False
      
      
    4. str.isalpha()

      • 判断字符串是否由字母、中文组成
      a1 = "zxd最nb"
      a2 = "zxd666"
      print(a1.isalpha())  # True
      print(a2.isalpha())  # False
      
      
    5. str.isdigit()

      • 判断字符串是否由阿拉伯数字组成
      a1 = "666"
      a2 = "六六六"
      print(a1.isdigit())  # True
      print(a2.isdigit())  # False
      
      
    6. str.isdecimal()

      • 判断字符串是否由十进制数字组成
      a1 = "66"
      a2 = "0x42"
      print(a1.isdecimal())  # True
      print(a2.isdecimal())  # False
      
      

    三、for循环

    (一)for循环和while循环的区别

    • for循环:有限循环
    • while循环:无限循环

    (二)for循环的结构

    • for i in xxx:
      	循环体
      
      
      • for:关键字
      • i:变量名
      • in:关键字
      • xxx:可迭代对象

    (三)len() 函数

    • 查询数据的长度,通用函数用于所有数据类型

    (四)for循环举例

    • 一个面试题

      for i in "abcde":
          pass
      print(i)  # 循环最后给变量i赋值的是e,没有变动e一直指向e
      
      
    • 理解for循环和函数自上而下执行机制

      num = 1
      count = 3
      while count:
      	for i in "abc":
      		print(i + str(num),end=",")
      	print()
      	count -= 1
      	num += 1
      
      
      输出结果:
      a1,b1,c1,
      a2,b2,c2,
      a3,b3,c3,
      
      
  • 相关阅读:
    从12306.cn谈大网站架构与性能优化
    新浪微博的存储思路整理架构分享--微博架构的回顾
    多吃以上食物可以调理内分泌
    脸部护理
    美容实用小知识
    如何把网页或html内容生成图片
    互联网阅读与知识积累流程化实践分享
    怎样与人沟通?
    如何控制情绪
    如何去掉Google搜索的跳转 让你的Google搜索不被reset掉
  • 原文地址:https://www.cnblogs.com/tianlangdada/p/11518632.html
Copyright © 2011-2022 走看看