练习:输入一个长字符串,判断其中数字的个数。

# 输入一个长字符串,判断其中数字的个数。
s1 = input("请输入一个包含字母和数字的字符串:")
# wdqwddwq78dq9fas868qw997fsa75qwf89f8av9a0gggw8q68
num = 0 # 定义一个变量用于计数数字的个数
for i in s1: # 字符串是可以直接被for循环遍历得到每一个字符的
if i.isdigit():
num = num + 1
print(f"该字符串中,数字字符有:{num}个")
  • startswith 判断字符串是否以某个小字符串开头


    s1 = "shujia数加科技学习study"
    b = s1.startswith('sh')
    print(b) # True
  • endswith 判断字符串是否以某个小字符串结尾

    s1 = "shujia数加科技学习study"
    # b = s1.startswith('sh')
    # print(b) # True
    b = s1.endswith('wdy')
    print(b) # False
  • split 指定分隔符从左向右切进行切分

    # 扩展知识:.csv后缀格式的文件,若以记事本打开的话,
    # 列和列之间,默认使用的是英文逗号分割的
    # 1001,张三,18,男,33期
    s1 = "1001,张三,18,男,33期"
    l1 = s1.split(',')
    print(l1)

    默认是所有分隔符都会切分,但是可以设置maxsplit参数值,指定切割的次数

s1 = "1001,张三,18,男,33期"
l1 = s1.split(',', maxsplit=2)
print(l1) # ['1001', '张三', '18,男,33期']
  • rsplit 指定分隔符从右向左切进行切分

    s1 = "1001,张三,18,男,33期"
    # l1 = s1.split(',', maxsplit=2)
    # print(l1) # ['1001', '张三', '18,男,33期']
    l1 = s1.rsplit(',', maxsplit=1)
    print(l1)
  • join 以调用该方法的字符串进行拼接

    # 1001,张三,18,男,33期
    s1 = "1001,张三,18,男,33期"
    l1 = s1.split(',')
    print(l1)
    # 1001|张三|18|男|33期
    print("---------------------")
    s2 = '|'.join(l1)
    print(s2)
  • replace 指定新字符串替换旧字符串

    s1 = '今天我在数加科技学习,今天学习了大数据相关的知识,在数加每一天都很充实!'
    s2 = s1.replace('数加', 'shujia')
    print(f"s1:{s1}")
    print(f"s2:{s2}")
  • strip() 去除字符串两边的空白字符, 注意不会去除字符串中间本身的空白字符

    s1 = ' hello world '
    s2 = s1.strip()
    print(f"s1:{s1}") # s1: hello world
    print(f"s2:{s2}") # s2:hello world
  • rstrip() 去除字符串右边的空白字符

  • ltrip() 去除字符串左边边的空白字符

    • 例子:登录例子

      name = input("请输入您的姓名:")
      pwd = input("请输入您的密码:")
      if name.strip()=='root' and pwd.strip()=='123':
      print('登录成功!')
      else:
      print('登录失败!')

字符串练习

  • 多次替换

每次替换都会得到一个新的结果字符串,下次替换,接着上一次结果继续替换

s1 = "今天我在数加科技学习,今天学习了大数据相关的知识,在数加每一天都很充实!"
s2 = s1.replace('数加','shujia')
s3 = s2.replace('数据','data')
s4 = s3.replace('每一天','every day')
print(s4)

使用链式调用改进

s1 = ("今天我在数加科技学习,今天学习了大数据相关的知识,在数加每一天都很充实!"
.replace('数加','shujia')
.replace('数据','data')
.replace('每一天','every day'))
print(s1)
  • 写代码实现,用户输入自己的国籍,如果是以中国开头,输出中国人,否则输出外国人

    • 方式1:使用startswith实现
    • 方式2:单独取前两个字符判断
s1 = input("请输入自己的国籍:")
if s1.startswith("中国"):
print("中国人")
else:
print("外国人")

​

s1 = input("请输入自己的国籍:")
if s1[0:2] == '中国':
print("中国人")
else:
print("外国人")
  • 根据用户输入的文本信息,统计出‘数’这个字的出现次数

    # 根据用户输入的文本信息,统计出‘数’这个字的出现次数
    s1 = input("输入一个文本: ")
    n = 0
    for i in s1:
    if i == '数':
    n = n + 1
    print(f"该文本中'数'出现了{n}次")
  • 根据用户输入的文本信息(只包含英语字母和数字),将所有的字母和数字单独提取出来

    # 根据用户输入的文本信息(只包含英语字母和数字),将所有的字母和数字单独提取出来
    s1 = input("输入一个文本: ")
    # dsadsa78qwfq89faav7a96qw0fsa7875a
    number_str = ''
    zimu_str = ''
    for i in s1:
    if i.isdigit():
    number_str = number_str + i
    else:
    zimu_str = zimu_str + i
    print(f"所有数字字符:{number_str}")
    print(f"所有非数字字符:{zimu_str}")

列表

用于存储多种元素的容器,列表中的元素具有有序【存储和取出的顺序一致】且可以发生重复的特

点

同样具备索引的概念,同一个列表中的元素类型可以是不一样的

举例:[10, 12.23, '数加', True, [11,22,33,44], 'shujia']

公共功能
  • 长度功能

    # 如何创建一个空列表?
    # 方式1:直接使用[]
    list1 = []
    # 方式2:使用内置函数list()
    list1 = list()
    # 使用len()函数获取元素的个数
    list1 = [10, 12.23, '数加', True, [11,22,33,44], 'shujia']
    print(f"list1列表中的元素个数为:{len(list1)}") # 6
    # 列表本身就是一个可以迭代的序列,所以直接使用for循环获取元素
    list1 = [10, 12.23, '数加', True, [11,22,33,44], 'shujia']
    for i in list1:
    print(i)
  • 索引功能

    # 0 1 2 3 4 5
    list1 = [11, 22, 33, 44, 55, 66]
    # -6 -5 -4 -3 -2 -1
    # 获取44这个元素
    print(list1[3])
  • 切片功能

# 0 1 2 3 4 5
list1 = [11, 22, 33, 44, 55, 66]
# -6 -5 -4 -3 -2 -1
print(list1[2:5])
print(list1, type(list1))
# 使用负数索引获取33,44,55
print(list1[-4:-1]) # [33, 44, 55]
# 按顺序取55,44,33
print(list1[-2:-5:-1]) # [55, 44, 33]
  • in 判断某一个元素是否在列表中出现

    list1 = [11,22,33,44,55,66,22,11,55,77,22,11,22]
    if 77 in list1:
    print("77出现在列表中")
    else:
    print("未出现")

独有功能在列表自身的基础上做修改

  • 增加元素
    • 追加 append

      # 创建一个空列表
      list1 = []
      # list1 =list()
      list1.append(100)
      list1.append('hello')
      list1.append('world')
      list1.append(True)
      list1.append('hello')
      list1.append('flink')
      print(f"list1:{list1}") # list1:[100, 'hello', 'world', True, 'hello',
      'flink']

      例子

      name_list = []
      while True:
      name = input("请输入登录用户的名字:")
      if name.upper() == 'Q':
      break
      name_list.append(name)
      print(name_list)
    • 插入insert

# list1:[100, 'hello', 'world', True, 'hello', 'flink']
print(f"list1:{list1}")
print("--------------------")
list1.insert( 2,'黄沪生')
print(f"list1:{list1}")
  • 删除元素

    • 方式1:调用remove()函数 在已知要删除元素的值

      list1 = [11, 22, 33, 44, 55, 66]
      list1.remove(44)
      # list1.remove(100) # 报错
      print(f"list1: {list1}")
      print('hello wor=ld')
    • 方式2:调用pop()函数 根据索引删除元素,返回被删除元素的值

      list1 = [11, 22, 33, 44, 55, 66]
      s = list1.pop(3)
      print(f"list1: {list1}")
      print(s)
      print('hello world')
    • 方式3:使用python内置关键字 del

      list1 = [11, 22, 33, 44, 55, 66]
      del list1[3]
      print(f"list1: {list1}")
  • 修改元素 直接通过索引覆盖原有的值,起到修改的效果

    list1 = [11, 22, 33, 44, 55, 66]
    list1[3] = 100
    print(f"list1: {list1}")
  • 反转功能

    list1 = [11, 22, 33, 44, 55, 66]
    print(f"反转前:{list1}")
    list1.reverse()
    print(f"反转后:{list1}")

    练习:判断某一个字符串是否是对称字符串

# aba helloolleh hello owo
str1 = input("请输入一个字符串:")
list2 = list(str1) # 字符串转列表,每个字符作为列表中的元素
list2.reverse() # 将列表中的元素进行反转
str2 = ''.join(list2) # 将元素以指定分隔符拼接得到字符串
if str2==str1:
print("该字符串是一个对称字符串!")
else:
print("不是对称字符串!")
  • 拷贝功能

    • 浅拷贝 python列表中的copy()属于浅拷贝

      • 拷贝单个元素列表的形式

        list1 = [11, 22, 33, 44, 55, 66]
        list2 = list1.copy()
        print(f"list1:{list1}")
        print(f"list2:{list2}")
        print("-----------------------------")
        list1[3] = 100
        print(f"list1:{list1}")
        print(f"list2:{list2}")

        画图

  • 拷贝复杂元素列表的形式

    list1 = [11, 22, 33, [100, 200, 300], 55, 66]
    list2 = list1.copy()
    print(f"list1:{list1}")
    print(f"list2:{list2}")
    print("-----------------------------")
    list1[3][1] = 'hello'
    print(f"list1:{list1}")
    print(f"list2:{list2}")

    画图解释

  • 深拷贝

  • count() 统计列表中某个元素的个数

    list1 = [11,22,33,44,55,66,22,11,55,77,22,11,22]
    res1 = list1.count(11)
    print(res1)

元组 tuple

元素有序,也可以发生重复,但是元素中的元素,一旦确定了,就不能更改【无法完成增删改】

  • 如何创建一个元组?

    • 创建一个空元组
# 创建一个空元组
# t1 = ()
t1 = tuple()
print(t1, type(t1))
  • 创建一个非空元组

    • 创建一个只有1个元素的元组 , 元素的后面要有一个逗号,若不加,等同于一个元素直接

    赋值

t1 = (11,)
print(t1, type(t1))
  • 创建一个元素个数大于等于2的元组 最后一个元素后面加逗号或者不加都行

    # t2 = (11,22,33,)
    t2 = (11,22,33)
    print(t2, type(t2))
    公共功能
    • 长度功能 获取的是元素的个数
    t2 = (11,22,33,)
    print(len(t2))
    • 索引功能

      t2 = (11,22,33,)
      print(t2[1])
      # 遍历元组
      t1 = (11,22,33,44,55,66)
      for i in t1:
      print(i)
    • 切片功能

    t1 = (11,22,33,44,55,66)
    print(t1[2:5]) # (33, 44, 55)
    • in 包含

      t1 = (11,22,33,44,55,66)
      if 44 in t1:
      print("yes")
      else:
      print("no")
      独有功能
      • count()

      • index()

      通常情况下,开发中我们将元组中存储固定的链接值,比如与数据库的连接信息,重要的路径信

      息。

字典 dict

特点:

元素是由键值对构成,一个键值对看作一个元素

键是唯一的,不允许重复出现

值可以发生重复的

元素键和值的类型可以是不一样的

一个字典中的元素之间是有序的【python3.6版本之后】,【python3.6之前是无序的】

  • 如何创建一个字典?

    # 创建一个空字典
    d1 = dict()
    print(d1, type(d1))
    d2 = {}
    print(d2, type(d2))
    公共功能
  • 长度功能 获取的是键值对的个数

    d1 = {'name':'张三', 'age':18, 'likes':['打游戏','看电影','跑步'], 'dog':{'name':'哮
    天犬','age':3}}
    print(len(d1)) # 4
  • 索引功能

    在字典类型里,索引指的是键,键是唯一,可以通过键获取对应的值

d1 = {'name':'张三', 'age':18, 'likes':['打游戏','看电影','跑步'], 'dog':{'name':'哮
天犬','age':3}}
print(d1['age']) # 18
print(d1['likes'][1]) # 看电影
  • 切片功能 字典没有切片
  • in 包含功能 判断的是键是否存在字典中
if 'name' in d1:
print('存在这个键') # 存在!!
else:
print("不存在")
# -----------------------------------------
if 18 in d1:
print('存在这个键')
else:
print("不存在") # 不存在!!
  • 遍历

    • 先获取所有的键,遍历得到每一个键,根据键获取每一个值
d1 = {'name': '张三', 'age': 18, 'gender': '男', 'clazz': '33期'}
# 获取所有的键
keys = list(d1.keys())
for key in keys:
# 根据键获取对应的值
value = d1.get(key)
print(f"{key}-{value}")
  • 直接获取所有的键值对,遍历得到每一个键值对,得到每一个键和每一个值
key_values = list(d1.items())
# print(key_values, type(key_values))
for key_value in key_values:
key = key_value[0]
value = key_value[1]
print(f"{key}={value}")
独有功能
  • keys() 获取字典中所有的键

  • get(键) 根据键获取值

  • items() 获取所有的键值对

  • clear() 清空字典中所有的元素

  • pop 根据键从字典中移除一个键值对,返回一个值

集合 set

元素唯一且无序

set集合创建的方式:

创建空set集合

s1 = set()
s2 = {11, 22, 33, 45, 6, 1, 1, 22, 33, 45, 11}
公共功能
  • 没有索引的概念

  • 没有切片的功能

  • 长度功能

s2 = {11, 22, 33, 45, 6, 1, 1, 22, 33, 45, 11}
# print(s2, type(s2))
print(s2)
print(len(s2))
  • in 包含

    s2 = {11, 22, 33, 45, 6, 1, 1, 22, 33, 45, 11}
    # print(s2, type(s2))
    # print(s2)
    # print(len(s2))
    if 22 in s2:
    print("yes")
    else:
    print("no")
  • 练习:去重列表中的重复元素

    • 方法1:借助一个空列表
list1= [11, 22, 33, 45, 6, 1, 1, 22, 33, 45, 11]
# print(list1)
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(f"list2:{list2}")
  • 方式2:借助转set集合进行去重
list1= [11, 22, 33, 45, 6, 1, 1, 22, 33, 45, 11]
list1 = list(set(list1))
print(list1)
独有功能
  • 求差集
s1 = {11,22,33,44}
s2 = {22,33,55,66}
# res1 = s1 - s2 # 求差集
res1 = s1.difference(s2)
print(res1)
  • 求并集
s1 = {11,22,33,44}
s2 = {22,33,55,66}
res1 = s1.union(s2)
print(res1)
  • 求交集
s1 = {11,22,33,44}
s2 = {22,33,55,66}
res1 = s1.intersection(s2)
print(res1)
  • 添加元素 add
s1 = {11,22,33,44}
s1.add('hello')
s1.add('world')
s1.add(14)
print(s1)
  • 删除一个元素
res1 = s1.pop()
print(s1)
print(res1)
  • 指定元素删除 remove()

    若元素不存在,则报错

res1 = s1.remove(11)
print(s1)
print(res1)
  • 指定元素删除 discard()

若元素不存在,不会报错

s1 = {11,22,33,44}
s1.discard(33)
print(s1)

python语法第二篇的更多相关文章

  1. Python人工智能第二篇:人脸检测和图像识别

    Python人工智能第二篇:人脸检测和图像识别 人脸检测 详细内容请看技术文档:https://ai.baidu.com/docs#/Face-Python-SDK/top from aip impo ...

  2. Python人工智能第二篇

    Python人工智能之路 - 第二篇 : 现成的技术   预备资料: 1.FFmpeg: 链接:https://pan.baidu.com/s/1jonSAa_TG2XuaJEy3iTmHg 密码:w ...

  3. 【python自动化第二篇:python入门】

    内容概览 模块 python运行过程 基本数据类型(数字,字符串) 序列类型(列表,元组,字典) 模块使用 模块我们可以把它想象成导入到python以增强其功能的一种拓展.需要使用import来导入模 ...

  4. [Python笔记]第二篇:运算符、基本数据类型

    本篇主要内容有:运算符 基本数据类型等 一.运算符 1.算术运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 6.身份运算 7.位运算 8.运算符优先级 二.基本数据类型 1.整数:int ...

  5. python基础-第二篇-基本数据类型

    一.运算符 1.算数运算: 算数运算符相信大家都不陌生吧,尤其是加减乘除,好!那我就带着大家看看最后三个,这三个到底是干什么玩意的? %,取两数相除的余数,看图: **,x的多少次幂,看图: //,取 ...

  6. 图解Python 【第二篇】:Python基础2

    本节内容一览图 一.数据类型 1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. ...

  7. python初识第二篇

    python 编码: 第一次编程有时候会遇到乱码的情况,就可以通过以下的情况来解决 在Windows中默认的就是gbk编码,如果在代码头两部定义utf-8,系统还会按照系统的方式来定义. python ...

  8. python【第二篇】列表、元组、字典及文件操作

    本节内容 列表 元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作:列表有序.可变.元素 ...

  9. Python【第二篇】运算符及优先级、数据类型及常用操作、深浅拷贝

    一.运算符及优先级 Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 1.算数运算符 运算符 描述 实例,a=20,b=10 + 加 a+b输出结果30 - 减 a-b输出结果 ...

  10. Python 学习 第二篇:数据类型(字符串)

    字符串是一个字符的.有序的.不可变的序列,用于存储基于文本的信息.字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改.Python没有C语言的字符和字符串之分,只有字符串. ...

随机推荐

  1. 0.1 Introduction to the tenth anniversary edition

    此序作于2010年 1970s&1980s, 除了将量子系统仅仅视为一种自然界中需要解释的现象,大家开始将其视为可以设计的系统. 这种新的观点引起了物理,计算机科学和信息理论等领域交叉融合之后 ...

  2. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现二

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  3. python之APScheduler

    介绍 APScheduler是Python中一个强大的第三方库,用于在后台执行定时任务.它允许我们根据设定的时间间隔.日期规则或特定时间来执行任务,适用于定时执行脚本.定时发送邮件.定时处理数据等场景 ...

  4. BitLocker驱动器加锁和解锁

    应用场景: 单位配备给你使用的电脑(Win10系统),偶尔也会有其他人使用.你可以设置某一个磁盘为你的私密数据存储空间,只有你输入密码后才能进入磁盘.即使系统重装.硬盘被拆下来挂载到其他机器上,没有密 ...

  5. PictureMarkerSymbol透明的问题

    由于我使用的是位图图片,所以不可能将图片背景处理成透明.不过还是可以通过参数的设定来达到这种效果. PictureMarkerSymbol pPMS = new PictureMarkerSymbol ...

  6. Vue项目报TypeError: Cannot read properties of undefined (reading '_wrapper')

    前情 最近在做一个营销活动的时候,我选择了Vue技术栈来开发. 坑位 项目看似一切都正常,但当我在绑定的js事件中去修改当前组件的data上的值时会报错:TypeError: Cannot read ...

  7. Mplus数据分析:性别差异gendergap的相关研究如何做?

    再出一篇用mplus做的多组比较和中介分析的文章,专门谈谈诸如性别差异的各种研究的分析方法,从本文中大家不止可以知道性别差异,各种差异,各种gap只要你感兴趣都可以套进来这个方法来进行你的研究设计. ...

  8. .NET 服务发现

    .NET 服务发现 https://learn.microsoft.com/en-us/dotnet/core/extensions/service-discovery?tabs=dotnet-cli ...

  9. 大咖论道|金融AI下一阶段的发展思考

    回顾过去十年,人工智能(AI)技术的发展速度让人惊叹,金融行业是现今AI应用最具潜力和最为活跃的领域之一.通过多年渗透,AI不间断从技术驱动迈向场景驱动,已广泛与金融业务深度融合,衍生出众多新业态.新 ...

  10. 【C#】【平时作业】习题-9-接口

    1.什么是接口 为派生类提供因该遵守的标准结构,而本身只包含成员声明,不包含成员的定义 2.接口与抽象类有什么区别 3.设计IBluetooth. public interface IBluetoot ...