03-string字符串和while循环
→→博主新网站,点击跳转←←
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循环的更多相关文章
- JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)
String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...
- Redis学习03——存储字符串(String)
--------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...
- 漫话C++之string字符串类的使用(有汇编分析)
C++中并不提倡继续使用C风格的字符串,而是为字符串定义了专门的类,名为string. 使用前的准备工作 在使用string类型时,需要包含string头文件,且string位于std命名空间内: # ...
- C++学习37 string字符串的访问和拼接
访问字符串中的字符 string 字符串也可以像字符串数组一样按照下标来访问其中的每一个字符.string 字符串的起始下标仍是从 0 开始.请看下面的代码: #include <iostrea ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- 17.C++-string字符串类(详解)
C++字符串string类 在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低. 所以在C++标准库里,通过类string从新自定义了字符 ...
- 集合或数组转成String字符串
1.将集合转成String字符串 String s=""; for (int i = 0; i < numList.size(); i++) { if (s=="& ...
- C# int数组转string字符串
方式一:通过循环数组拼接的方式: int[] types = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; string result = string.Empty ...
- Java常用API——String字符串运算
一.字符串运算 String类 1.概述 String是特殊的引用数据类型,它是final类. 2.构造方法 String str = "abc"; 相当于: char date ...
- js比较两个String字符串找出不同,并将不同处高亮显示
根据java代码改写成js,下边js文件代码: function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.a ...
随机推荐
- HDU 4915 多校5 Parenthese sequence
比赛的时候想了一个自认为对的方法,WA到死,然后还一直敲下去,一直到晚上才想到反例 找是否存在解比较好找,这种左右括号序列,把(当成1,把)当成-1,然后从前往后扫,+1或者-1 遇到?就当初(,然后 ...
- IDE一直在indexing, 造成系统卡死解决方法
点击箭头指向,重启idea
- Java交换数据为何不起作用原因分析
一.概述 目前各类语言中向函数传递参数的类型分为三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值:按引用传递表示方法(函数)接收的调 ...
- hdu 1160 上升序列 dp
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- spring学习第7天(PCD以及切点表达式)
1.PCD(PointCutDesigner) spring的aop只针对方法进行aop代理,而apectj联盟的aop比之更加强大,还可以针对字段等进行切面编程 1.1:execution,用的最多 ...
- AD在更新PCB的时候,每次封装都会改变位置?
转载:https://blog.csdn.net/abc87891842/article/details/52538660 3.如果是很多元件的ID不一致, 手动修改太麻烦了, 可以使用AD的 &qu ...
- 出现这样的错误提示: E: Sub-process /usr/bin/dpkg returned an error code
1.$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名2.$ sudo mkdir /var/lib/dpkg/info ...
- 快速幂(51Nod1046 A^B Mod C)
快速幂也是比较常用的,原理在下面用代码解释,我们先看题. 51Nod1046 A^B Mod C 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. In ...
- PAT A1015-1016
A 1015 Reversible Primes 看清题意即可.给的数是十进制的,需要先判断是不是素数,然后按照给定进制转化成字符串后进行翻转,最后再转化为十进制并判断是否为素数. #include ...
- Java算法练习——寻找两个有序数组的中位数
题目链接 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 $O(log(m + n))$. 你可以假设 nu ...