→→博主新网站,点击跳转←←

03-string字符串和while循环

1. string介绍

  • python中字符串通常以单引号或者双引号来创建,是计算机语言中最常见的数据类型

  • string不可变,即如果修改,将会重新分配内存地址

    a = "sense"
    print(id(a))
    a += "2"
    print(id(a)) 输出:
    3227798249968
    3227799102664

2. 字符串的运算

  • 字符串相加:也就是字符串拼接

    a = "sense"
    b = "wang"
    c = a + b
    print(c) 输出:
    sensewang #如果是数字呢
  • 字符串乘法: 也就是重复字符串n次,它是和整数相乘的

    a = "hello world\n"			#\n为换行符
    print(a*4) 输出:
    hello world
    hello world
    hello world
    hello world
  • 字符串大小的比较:根据ASCII值比较

3. 下标及分片

  • 下标:也称为索引,通常表示某个字符在整个字符串中的位置,下标从0开始,下标写在[]中

    a = "senSe"
    # 取n
    print(a[2])
    # 取第小s
    print(a[0]) 输出:
    n
    s
  • 分片:也称为切片,通常获取字符串的一部分内容,将序列按段分割

    • 实例(使用IPython):
    # 格式:[(index_start):(index_end):(Step_length)],开始索引,结束索引,步长
    
    In [1]: string = 'abcdefgh'
    In [2]: string[0:2] #取0~2之间的下标,不包括下标2,[0,2),默认步长为1
    Out[2]: 'ab'
    In [3]: string[0:6:2] #取0~6之间的下标,步长为2,不包含6下标
    Out[3]: 'ace'
    In [4]: string[2:] #取从2下标以后的所有元素,包括下标2
    Out[4]: 'cdefgh'
    In [5]: string[:2] #取从下标2以前的所有元素,不包下标2
    Out[5]: 'ab'
    In [6]: string[:] #取全部元素
    Out[6]: 'abcdefgh'
    In [7]: string[::2] #取步长为2的全部元素,
    Out[7]: 'aceg'
    In [8]: string[::-1] #取反转后的全部元素
    Out[8]: 'hgfedcba'
    In [9]: string[::-3] #取步长为3的全部反转元素
    Out[9]: 'heb'
    In [10]: string[-2] #取倒数第二个元素
    Out[10]: 'g'
    In [11]: string[-5:-2] #取从倒数第五个以后到倒数第二个的下标,不包括倒数第五个
    Out[11]: 'def'

4. 格式化输出

  • 当想要让数据按照指定的格式输出,需要在字符串中进行格式说明,格式说明由格式字符组成,常见的格式字符如下:

    格式字符 描述
    %s 格式化字符串
    %d 格式化整数
    %f 格式化小数
  • 实例:

    name = "sense"
    age = 18
    height = 175.5
    print("我的名字是%s,年龄%d岁,身高%.2fcm" % (name,age,height)) #.2表示保留两位小数 输出:
    我的名字是sense,年龄18岁,身高175.50cm

5. f-string格式化输出用法

  • python3.6后引入的新型格式化输出工具,功能更加强大,而且容易上手

  • 该工具把字符串当成一个模板,通过传入的参数进行格式化,以f或者F为修饰符,以{}标明被替换的字段

  • 实例

    name = "sense"
    age = 18
    height = 175.5
    d = {"name":"sense","age":18}
    print(f"我的名字是{name},年龄为{age},身高{height}cm.")
    print(f"{d['name']},{d['age']}") #还可以对自动进行输出
    print(f'{age+2}') #还可以进行数学运算 输出:
    我的名字是sense,年龄为18,身高175.5cm.
    sense,18
    20

6. 字符串方法

  • 因为字符串为最常见的数据类型,所以众多方法也应运而生,包含对字符串的更改、转换、代替等

  • 字符串大小写转换方法

    方法名 描述
    lower() 把字符串中的英文转为小写
    upper() 把字符串中的英文转为大写
    swapcase() 把字符串中的大写英文转为小写,小写转为大写
    capitalize() 首字母大写,其余小写
    title() 每个单词首字母大写
  • 字符串位置整理方法

    方法名 描述
    center(x,str) 把字符串居中显示,总长度x,填充符为str
    ljust(x,str) 把字符串左方显示,总长度x,填充符为str
    rjust(x,str) 把字符串右方显示,总长度x,填充符为str
  • 查找字符串方法

    方法名 描述
    find(str,num1,num2) 从左到右查找str的位置,可以指定范围:num1为开始位置,num2为结束位置,找不到返回-1
    rfind(str,num1,num2) 从右到左查找str的位置,可以指定范围:num1为开始位置,num2为结束位置,找不到返回-1
    index(str,num1,num2) 从左到右查找str的位置,可以指定范围:num1为开始位置,num2为结束位置,找不到抛错
    rindex(str,num1,num2) 从右到左查找str的位置,可以指定范围:num1为开始位置,num2为结束位置,找不到抛错
  • 截取、分割字符串方法

    方法名 描述
    lstrip(str) 截掉字符串左侧括号中指定的字符,默认字符是空格
    rstrip() 截掉字符串右侧括号中指定的字符,默认字符是空格
    split(str) 以str为分割符分割字符串,最后返回list
    splitlines(keepends=False) 以行为分割符分割字符串,最后返回list,keepends为True时保留换行符
  • 判断字符串方法

    方法名 描述
    isalpha() 判断字符串中至少有一个字符,且所有的字符都是字母,则会返回True
    isalnum() 判断字符串中至少有一个字符,且所有的字符都是数字或字母,则会返回True
    istitle() 判断字符串是标题化,则返回True,反之返回False,即只有每个单词首字母大写
    isdigit() 判断字符串只能为数字返回True,反之返回False
    isspace() 判断字符串只为空格
    startwith(str,num1,num2) 判断字符串是否以str开头、num1,num2用于指定范围,不指定范围默认为全部
    endwith(str,num1,num2) 判断字符串是否以str结尾、num1,num2用于指定范围,不指定范围默认为全部
  • 字符串其他方法

    方法名 描述
    len(string) 返回字符串的长度(字符个数)
    eval(string) 将字符串当成有效表达式求值并返回结果,结果为int
    count(str,num1,num2) 统计字符串中str出现的次数,num1,num2用于指定范围
    replace(old,new,num1) 替换字符串中的字符,num1用于指定替换次数
    encode(encoding) 为字符串指定字符编码

7. 布尔值,空值

  • 布尔值:True和False,代表真和假,主要用于判断
  • 空值:None,一个特殊值,代表无,并不代表0

8. while循环

  • 根据指定条件来循环执行对应的语句,如果条件一直满足,则一直执行

  • 普通while格式

    while 条件表达式:
    语句
  • while-else语句:当while的条件不满足后,将会执行else对应的语句

    while 条件表达式:
    语句
    else:
    语句2
  • while循环小案例:

#猜数字小游戏----10次机会在0~10之间猜数,最后统计猜对的次数
import random
times = 0
count = 0
while times < 5: #当times小于5时,就会一直循环
num = random.randint(0,5)
input_str = int(input("请猜数:"))
times += 1 #每次循环到此处,times就+1,这也是能让循环停止的条件
if input_str == num:
print("猜对了!")
count += 1
else:
print("猜错了!")
print(f"共猜对{count}次")

03-string字符串和while循环的更多相关文章

  1. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

  2. Redis学习03——存储字符串(String)

    --------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...

  3. 漫话C++之string字符串类的使用(有汇编分析)

    C++中并不提倡继续使用C风格的字符串,而是为字符串定义了专门的类,名为string. 使用前的准备工作 在使用string类型时,需要包含string头文件,且string位于std命名空间内: # ...

  4. C++学习37 string字符串的访问和拼接

    访问字符串中的字符 string 字符串也可以像字符串数组一样按照下标来访问其中的每一个字符.string 字符串的起始下标仍是从 0 开始.请看下面的代码: #include <iostrea ...

  5. 【转】String字符串相加的问题

    String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...

  6. 17.C++-string字符串类(详解)

    C++字符串string类 在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低. 所以在C++标准库里,通过类string从新自定义了字符 ...

  7. 集合或数组转成String字符串

    1.将集合转成String字符串 String s=""; for (int i = 0; i < numList.size(); i++) { if (s=="& ...

  8. C# int数组转string字符串

    方式一:通过循环数组拼接的方式: int[] types = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; string result = string.Empty ...

  9. Java常用API——String字符串运算

    一.字符串运算 String类 1.概述 String是特殊的引用数据类型,它是final类. 2.构造方法 String str = "abc"; 相当于:  char date ...

  10. js比较两个String字符串找出不同,并将不同处高亮显示

    根据java代码改写成js,下边js文件代码: function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.a ...

随机推荐

  1. 用cmd运行java可以javac不行(win10)

    今天发现个有趣的问题,用cmd运行java可以javac不行.(win10) java-home和classpath配置没有问题,最后发现问提出先在path,在这里看并没有异常. 在上面图片中点击编辑 ...

  2. Python 比较 相等性 真值

    1 == 操作符测试 值 的相等性: is 测试对象的一致性.注意短字符串的is相等性测试,PVM会缓存短字符串,s1 is s2 将返回true. 2 false:"", [], ...

  3. “未处理DbEntityValidationException”,"对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性"。

    对一个或多个实体的验证失败.有关详细信息,请参阅“EntityValidationErrors”属性. 问题原因可能是: 1. 非空列未插入值错误 2. 多个表间外键列长度不一样 3. ef上下文对象 ...

  4. HDU - 2602 Bone Collector(01背包讲解)

    题意:01背包:有N件物品和一个容量为V的背包.每种物品均只有一件.第i件物品的费用是volume[i],价值是value[i],求解将哪些物品装入背包可使价值总和最大. 分析: 1.构造二维数组: ...

  5. 2016蓝桥杯省赛C/C++A组第二题 跳蚱蜢

    题意:有9只盘子,排成1个圆圈.  其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中.  请 ...

  6. rdlc报表带参数打印

    1.新建rdlc文件报表 2.选中rdlc文件=>视图=>报表资料 添加几个参数,如图 设计报表页面 int WaitNum = this.queueDTOs.Where(m=>m. ...

  7. jar包-循环遍历-开机启动服务-微服务-多项目拷贝-pid杀死进程-mysql备份脚本-防火墙检测脚本

    vi /root/serverkaiji.sh #!/bin/bash ls /tlvnksc/ | egrep -v "^c|^f" > /root/service.lis ...

  8. tensorflow应用于手写数字识别(第二版)

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data#载入数据集 mnist = inp ...

  9. Android进阶——多线程系列之Semaphore、CyclicBarrier、CountDownLatch

    今天向大家介绍的是多线程开发中的一些辅助类,他们的作用无非就是帮助我们让多个线程按照我们想要的执行顺序来执行.如果我们按照文字来理解Semaphore.CyclicBarrier.CountDownL ...

  10. c# 用户控件,usercontrol,自定义控件属性

    1.C#用户控件的使用 2.拖动添加:画面上如需多个usercontrol,添加TableLayoutPanel,然后在工具箱中找到usercontrol,拖到相应框中 3.代码添加:主窗口中有多个T ...