循环语句和字符串

四、循环语句之for

python 的循环有两种,一种是我们之前讲的while循环,另外一种就是for...in循环,依次把list或者tuple中的元素或者字符串迭代出来。

name = ['lili','Bob','Tracy']
for name in names:
    print(name)

执行这段代码,会依次打印names的每一个元素

lili
Bob
Tracy

所以 for x in … 循环就是把每个元素带入变量x,然后执行缩进块语句。

计算1~10的整数之和,可以用一个sum变量做累加:

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)

如果要计算1~100的整数之和,从1到100有点困难,在python中提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list,比如range(5)生成的序列是从0开始小于5的整数。

sum = 0
for x in range(100):
    sum += x
print(sum)

for 循环使用else语句

与while...else类似,else也会在循环正常执行完的情况下执行

for i in range(10):
    print(i)
else:
    print("********")

range函数

range函数可创建一个可迭代对象,一般用在for循环中

扫描二维码关注公众号,回复: 5833459 查看本文章

函数语法:

range([start,] stop[, step])

参数说明:

1.start:计数从start开始,默认从0开始,例如:range(5)等价于range(0, 5)
2.stop:计数到stop结束,但不包括stop。例如:range(0,5)的取值为[0,5)
3.step:步长,默认为1,例如range(0,5) 等价于range(0, 5, 1)

函数返回一个可迭代对象,从这个可迭代对象中可以获取一个整数列表

#使用list函数,可以从可迭代对象中获取整数列表
>>> list(range(5))
[0, 1, 2, 3, 4]

嵌套循环

我们可以循环体中嵌套循环

需求:打印九九乘法表

'''                          行    列
1x1=1                        1     1
1x2=2   2x2=4                2     2
1x3=3   2x3=6   3x3=9        3     3
...
​
总结:列数随着行数的变化而变化,列数的最大值和行数相等。
'''
i = 1
while i <= 9:
    j = 1
    while j <= i:
        sum = j*i
        print("%dx%d=%d"%(j,i,sum),end="    ")
        j += 1
    print("")
    i += 1
'''
打印结果:
1x1=1    
1x2=2    2x2=4    
1x3=3    2x3=6    3x3=9    
1x4=4    2x4=8    3x4=12    4x4=16    
1x5=5    2x5=10    3x5=15    4x5=20    5x5=25    
1x6=6    2x6=12    3x6=18    4x6=24    5x6=30    6x6=36    
1x7=7    2x7=14    3x7=21    4x7=28    5x7=35    6x7=42    7x7=49    
1x8=8    2x8=16    3x8=24    4x8=32    5x8=40    6x8=48    7x8=56    8x8=64    
1x9=9    2x9=18    3x9=27    4x9=36    5x9=45    6x9=54    7x9=63    8x9=72    9x9=81    
'''

拓展:

默认情况下使用print("")会自动打印换行符,如果需要更改换行符则需要在print()中添加end属性即print("",end=" "),这样就把换行更改成空格

五、String字符串

1.什么是字符串

字符串是以单引号或者双引号括起来的任意文本,一个字符串由若干个任意字符组成

2.创建字符串

str1 = "hello world"
str2 = 'you are good'

3.字符串运算

3.1字符串链接

3.1.1 使用加号进行链接

#字符串的链接,通过“+”进行链接
s1 = 'welcome'
s2 = 'to guangzhou'
print(s1 + s2)

注意:字符串 + 数字,这样会报错,不同类型的不能相加

3.1.2 使用“,”进行链接【tuple类型】

s1 = 'hello'
s2 = 'world'
print(s1, s2)
#使用“,”链接的时候,在“,”的位置会产生一个空格

3.1.3 使用%格式化链接

s1 = 'hello'
s2 = 'world'
print("%s %s"%(s1, s2))

3.1.4 使用join函数进行链接

s1 = ['hello', 'world']
print("".join(s1))

注意:"".join()函数内部只需要传递一个参数。

3.2 重复输出字符串

#重复输出字符串,通过乘法的方式实现
s3 = 'good'
print(s3 * 3)

3.3 获取字符串中的字符

#通过索引的方式实现
#索引:给一个字符串中的字符从0开始编号,也成为下标
#索引的取值范围:[0,str.length-1]
#访问方式: 变量名称[索引]
str3 = 'good'
print(str3[0])
#索引值还可以从-1开始,-1代表倒数第一个字符
print(str3[-1])

3.3 截取字符串

# 通过下标截取字符串
str1 = "hello world"
print(str1[3:6])
#注意:截取字符串的范围是str[start : end] 它是一个前闭后开的区间[start,end)
#如果n的值超过了字符串的最大长度,则仍然截取原下标的长度
​
#从开头截取到指定索引之前[0,5)
print(str1[:5])
​
#从指定截取到结尾[4,str1.length)
print(str1[4:])
​
#注意在使用str[start : end]来截取字符串的时候,若start不写默认从第一个字符开始
#若end不写,则默认到最后一个字符结束

3.5 判断是否包含指定字符

#判断字符串中是否包含某指定字符串
str4 = "you are a good boy"
print("good" in str4)
#若包含有则返回True否则为False

3.6 格式化输出

#通过%来改变后面的字母或者是符号的含义,%被称为占位符
# %s:打印字符串
print ("His name is %s"%("Aviad"))
# %d:打印整数
print ("He is %d years old"%(25))
# %f:打印浮点数,可指定小数点后的精度
print ("His height is %f m"%(1.83))
# %.2打印浮点数(指定保留小数点位数)
print ("His height is %.2f m"%(1.83))
#指定占位符宽度
print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
#指定占位符宽度(左对齐)
print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
#指定占位符(只能用0当占位符)
print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
​
​
age = 18
name = "丽丽"
weight = 45.5
print("my name is %s , I am %d year old and my weight is %.2f kg"%(name, age, weight))
#注意:%.nf表示精确到小数点后n位,会四舍五入

4.关于字符串常用函数

4.1 eval(str)

功能:将字符串str当成有效的表达式来求值并返回计算结果。

可以把list,tuple,dict, set和string相互转化

>>>num1 = eval('123')
>>>print(num1)
123
​
>>>num2 = eval("[1, 2, 3]")
>>>print(num2)
[1, 2, 3]
​
>>> num3 = eval("12-3")
>>> print(num3)
9

4.2 len(str)

功能:返回当前字符串的长度(字符的个数)

>>> len("you are good")
12

4.3 str.lower()

功能:返回一个把字符串中的大写字母转换为小写字母 的字符串

>>> str = "Hello World"
>>> print(str.lower())
hello world

注意:此方法不改变原本的字符

4.4 str.upper()

功能:返回一个把字符串中的小写字母转换为大写字母的字符串

>>> str = "Hello World"
>>> print(str.upper())
HELLO WORLD

4.5 str.swapcase()

功能:返回一个把字符串中的大写字母转为小写字母,小写字母转换为大写字母的字符串

>>> str = "Hello World"
>>> print(str.swapcase())
hELLO wORLD

4.6 str.capitalize()

返回一个首字母大写,其他小写的字符串

>>> str = "Hello World"
>>> print(str.capitalize())
Hello world

4.7 str.title()

返回一个每个单词首字母大写的字符串

>>> str = "Hello World"
>>> print(str.title())
Hello World

4.8 str.center(width[, fillchar])

功能:返回一个指定宽度的居中字符串,fillchar为填充的字符,默认使用空格

>>> str = "Hello World"
>>> print(str.center(50,"*"))
*******************Hello World********************

4.9 str.ljust(width[, fillchar])

功能:返回一个指定宽度的左对齐字符串,fillchar为填充字符。默认使用空格填充

>>> str = "Hello World"
>>> print(str.ljust(50,"*"))
Hello World***************************************

4.10 str.rjust(width[, fillchar])

功能:返回一个指定宽度右对齐字符串,fillchar为填充字符,默认使用空格填充

>>> str = "Hello World"
>>> print(str.rjust(50,"*"))
***************************************Hello World

4.11 str.zfill(width)

功能:返回一个长度为width字符串,原字符串右对齐,前面补0

>>> str = "Hello World"
>>> print(str.zfill(50))
000000000000000000000000000000000000000Hello World

4.12 str.count(str 【,start】【, end】)

功能:返回字符串中str出现的次数,可以指定一个范围,若不指定则默认从头到尾,匹配的时候是区分大小写的。

>>> str = "Hello World"
>>> print(str.count("hello", 0 , 10))
0

4.13 str.find(str1【, start】【, end】)

功能:从左到右检测str1字符串是否包含在字符串中,可以指定范围,默认从头到尾。

返回的是第一次出现的开始的下标,若未查询到,则返回-1

>>> str = "Hello World"
>>> str1 = "llo"
>>> print(str.find(str1, 0 , 10))
2

4.14 str.rfind(str1【, start】【, end】)

功能:类似于str.find(),不过是从右边开始查找

>>> str = "Hello World"
>>> str1 = "llo"
>>> print(str.rfind(str1, 0 , 10))
2

4.15 str.index(str1[, start = 0] ,[ end = len(str)])

功能:类似于find(),与find() 不同的是,如果str1不存在的时候会报一个异常

>>> str2 = "Hello World"
>>> str1 = "hello"
>>> print(str2.index(str1, 0 , 10))
ValueError: substring not found

4.16 str.lstrip()

功能:截掉字符串左侧指定的字符串,则默认删除空白符(包括'\n', '\r', '\t', ' ')

>>> str = '**** you are very good'
>>> print(str.lstrip())
>>> print(str.lstrip())
**** you are very good
>>> print(str.lstrip("*"))
 you are very good

4.17 str.rstrip()

功能:截掉字符串右侧指定的字符串,则默认删除空白符(包括'\n', '\r', '\t', ' ')

>>> str = '**** you are good****'
>>> print(str.rstrip())
**** you are good****
>>> print(str.rstrip("*"))
**** you are good

4.18 str.strip()

功能:截掉字符串左右两侧指定的字符串,则默认删除空白符(包括'\n', '\r', '\t', ' ')

>>> str1 = "      hello world     "
>>> str1.strip()
'hello world'

4.18 string.split(str="", num=string.count(str))

功能:以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num -- 分割次数

>>> str1 = "hello you are good"
>>> str1.split()
['hello', 'you', 'are', 'good']
>>> str1.split(" ",2)
['hello', 'you', 'are good ']

练习题

猜你喜欢

转载自blog.csdn.net/xjc1632165904/article/details/89174430