(四)字符串
1. 字符串表示:
分几行输入字符串,并且希望行尾的换行符自动包含到字符串当中,可以使用三对引号:"""..."""
或 '''...'''
。
\n 换行
s1 = 'you are a \n hero'
print(s1)
#指定原格式输出字符串
s = ('''\
joio
diei
deio
''')
print(s)
2. 字符串方法:
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
方法 join()
使用指定字符连接多个字符串,它需要一个包含字符串元素的列表作为输入然后连接列表内的字符串元素。
#字符串方法
s1 = 'you are MY sunshine'
print(s.title()) #返回字符串的标题版本:首字母大写
print(s.upper() + s.lower()) #返回全部大写或者全部小写
print(s.swapcase()) #返回大小写交换的版本
s2 = '123Bsd'
s3 = 'asdfghkl'
print(s2.isalnum()) #检查是否只有字母和数字,返回False/True
print(s3.isalpha() + s2.isalpha()) #检查是否只有字母
print(s2.isdigit()) #是否只有数字
print(s2.islower()) #是否都是小写
print(s2.isupper()) #是否都是大写
print(s2.istitle()) #是否为标题
s4 = '12:de:89:deo'
print(s1.split()) #split()切片函数,默认以空格分隔,返回的是列表
print(s4.split(':')) #指定参数以冒号分隔
print('-'.join('1 2 3 4 w u'.split())) #jion()用指定字符串连接多个字符串,包含字符串元素的列表作为输入
3. 字符串剥离:
字符串有几个进行剥离操作的方法。最简单的一个是 strip(chars)
,用来剥离字符串首尾中指定的字符,它允许有一个字符串参数,这个参数为剥离哪些字符提供依据。不指定参数则默认剥离掉首尾的空格和换行符
#字符串剥离:
s = 'dio.89.dieui.w'
print(s.strip()) #strip()剥离指定字符,没有参数默认剥离首尾的空格和换行符
print(s.rstrip()) #只对字符串右边进行剥离
print(s.lstrip('dei.')) #剥离字符串左边的'd','e','i','.',前提没有空格和换行
4. 文本搜索:
#文本搜索:
print(s.find('io')) #find()返回第一个匹配的子字符串的下标,没找到返回-1
print(s.find('iojiu'))
print(s.startswith('di')) #检查字符串是否以'di'开头,返回t/f
print(s.endswith('.w')) #检查是否以'.w'结束
5. 回文检查:
回文是一种无论从左还是从右读都一样的字符序列。比如 “madam”。
#回文检查:
s = 'jdwoihufe'
z = s[::-1] #把字符串s进行倒序处理
if s == z:
print('yes')
else:
print('no')
6. 单词计数:
格式符为真实值预留位置,并控制显示的格式。常用的有:
%s 字符串(用 str() 函数进行字符串转换)
%r 字符串(用 repr() 函数进行字符串转换)
%d 十进制整数
%f 浮点数
%% 字符“%”
#单词计数:
s = input("Enter a line: ")
print("The number of words in the line are %d" % (len(s.split(" "))))
(五)函数
一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
1. 函数定义:
定义方式&回文检查程序:
def sum(a,b):
return a + b
y = sum(1, 2)
print(y)
#回文检查函数:
def palindrome(s):
return s == s[::-1]
if __name__ == '__main__':
s = input('enter a string:')
if palindrome(s):
print('yes')
else:
print('no')
2. 局域或全局变量:
局部变量函数完成时销毁,函数外部不能使用。即使外部有和函数内部相同名称的变量,也不是同一个变量。
#局部变量和全局变量:
def change():
global a #globla关键字说明全局变量
a = 90
print(a)
a = 9
print("Before the function call ", a)
print("inside change function", end=' ')
change()
print("After the function call ", a)
3. 默认参数值:
函数的参数变量可以有默认值,也就是说如果我们对指定的参数变量没有给出任何值则会赋其默认值。在函数的参数列表写出 b = -99
。这表示如果调用者未给出 b
的值,那么 b
的值默认为 -99
。
#默认参数值:
def test(a , b=-99): #若调用者未给出b的值,则b=-99
if a > b:
return True
else:
return False
有两个非常重要的地方,第一个是具有默认值的参数后面不能再有普通参数,比如 f(a,b=90,c)
就是错误的。
第二个是默认值只被赋值一次,因此如果默认值是任何可变对象时会有所不同,比如列表、字典或大多数类的实例。
def f(a, data=[]): #默认值只被赋值一次,函数在后续调用中回累积前面传的参数
data.append(a)
return data
print(f(1))
print(f(2))
print(f(3))
为了避免上述问题,采用以下代码:
def f(a, data=None):
if data is None:
data = []
data.append(a)
return data
print(f(1))
print(f(2))
print(f(3))
4. 关键字参数:
函数可以通过关键字参数的形式来调用,形如 keyword = value
。当有多个参数时,可以指定将某个值传给某个参数,如下
#关键字参数:
def func(a, b=5, c=10):
print('a =',a, 'b =', b, 'c =', c)
func(12, 14)
func(13, c=23)
5. 强制关键字参数:
也能将函数的参数标记为只允许使用关键字参数。用户调用函数时将只能对每一个参数使用相应的关键字参数。
用*标记。
#强制关键字参数
def hello(*, name='User'):
print('hello,', name)
hello(name = 'zq')
如果写hello('zq'),会报错。
7. 文档字符串:
在 Python 里我们使用文档字符串(docstrings)来说明如何使用代码,这在交互模式非常有用,也能用于自动创建文档。
#文档字符串;
import math
def longest_side(a, b):
"""
Function to find the length of the longest side of a right triangle.
:arg a: Side a of the triangle
:arg b: Side b of the triangle
:return: Length of the longest side c as float
"""
return math.sqrt(a*a + b*b)
if __name__ == '__main__':
print(longest_side.__doc__)
print(longest_side(4,5))
这里的print(longest_side.__doc__)就是输出''' '''之间的文档说明内容。
8. 高阶函数:
高阶函数(Higher-order function)或仿函数(functor)是可以接受函数作为参数的函数:
- 使用一个或多个函数作为参数
- 返回另一个函数作为输出
Python 里的任何函数都可以作为高阶函数。
(有点像复合函数)
#高阶函数:
def high(l):
return [i.upper() for i in l]
def test(h, l): #test是一个复合函数,它允许函数作为参数并且返回值是函数
return h(l)
l = ['python', 'java', 'c']
a = test(high, l)
print(a)
结果:
map()函数:
map
是一个在 Python 里非常有用的高阶函数。它接受一个函数和一个序列(迭代器)作为输入,然后对序列(迭代器)的每一个值应用这个函数,返回一个序列(迭代器),其包含应用函数后的结果。
lst = [1, 2, 3, 4, 5]
def square(num):
'返回所给数字的平方'
return num * num
print(list(map(square,lst))) #map()函数