内容正文:
第2章 Python语言基础
2.1 基本数据类型
2.2 变量
2.3 运算符与表达式
2.4 输入与输出
2.5 内置函数
2.6 常用模块
2.4 输入与输出
2.4.1 输入函数input()
在Python中,内置函数input()用来获取用户输入的数据,输入的数据都视为字符串。input的语法格式如下:
变量 = input(<prompt>)
<prompt>:字符串,用于提示用户输入的文本内容
例如 age = input('输入年龄:')
典型错误 age=input # 漏了小括号
注: python的输入语句和c语言的输入语句差别很大
scanf("%d", &i) // C语言的输入语句
2.4 输入与输出
【例】从键盘输入数据
In: num = input('请输入一个数值:')
请输入一个数值:10
Out: '10' # num为字符串'10'
num + 20 # 将报错,字符串不能和整数直接相加
TypeError: can only concatenate str (not "int") to str
# 将字符串转为整数再执行算术运算, 也可写为 eval(num)+20
int(num) + 20
Out: 30
# 补充:一次输入多个变量的方法
x, y, z = eval(input('请输入三个数(逗号分隔):'))
请输入三个数(逗号分隔) :1,2,3
执行后 x=1, y=2, z=3
3
2.4 输入与输出
2.4.2 输出函数print()
内置函数print()用于输出显示,格式为:
print(<expr>[,<expr>,…] [,sep=<string>] [,end=<string>] )
<expr>:输出内容的表达式,可省略;
sep:分隔符,可省略,默认为空格;
end:末尾输出内容,默认是换行符
;
例
print(1, 2, 3) # 输出时,多个数据默认空格隔开
print(1, 2, 3, sep='+') # 输出时,数据用+隔开
print(99, end=''); print(100,end='') # 输出时end=''表示不换行
2.5 内置函数
在计算机程序中,函数是用于实现某一特定功能的代码集合。函数通常实现较为单一的功能,可多次调用,提高了代码的复用性。函数调用时一定要有括号。
x = abs(-10) # abs绝对值函数
y= pow(2,10) + x # pow幂函数
Python提供了很多内置函数,这些内置函数自动加载,可直接使用。用下面的命令可查看有哪些内置函数:
dir(__builtin__) # 此处前后都是两个下画线
2.5 内置函数
2.5.1 数学运算函数
表2.15 常用数学运算函数
函数名 功能
abs(x) 返回x的绝对值
divmod(x, y) 返回一个(x//y, x%y)的元组,即x除以y的整除商和余数
max(seq) 返回seq序列中的最大值
min(seq) 返回seq序列中的最小值
pow(x, y) 返回x的y次方
round(x, precison) 返回浮点数x的四舍五入值
sum(seq) 返回seq序列元素的和
2.5 内置函数
【例】数学运算函数的应用
abs(-1.2) # 绝对值
Out: 1.2
divmod(16, 5) # 返回整除的商和余数
Out: (3, 1)
x = max(2, -1, 8, 3) # 最大值
Out: 8
y = min(2, -1, 8, 3) # 最小值
Out: -1
pow(2, 3) # 次方函数
Out: 8
round(3.14159) # 默认取整
Out: 3
round(3.14159, 3) # 四舍五入,保留3位小数
Out: 3.142
sum([1, 2, 3, 4, 5]) # 求和
Out: 15
2.5 内置函数
2.5.2 字符串处理函数
字符串是一种常用的数据类型,Python提供了对字符串进行大小写转换、查找替换、统计、对齐及拆分合并的函数。
表2.16 字符串对象s常用的转换函数
函数名 功能
s.capitalize() 字符串首字母大写,其余字母小写
s.lower() 字符串中所有字母都小写
s.upper() 字符串中所有字母都大写
s.swapcase() 字符串中所有字母大小写互换
s.title() 字符串中每个单词的首字母大写,其余字母小写
s='pYthon java'
s.capitalize() # 首字母大写, Python java
s.lower() # 转小写, python java
s = s.upper() # 转大写, PYTHON JAVA
注:这些函数都不直接改变s,而是返回新字符串。
2.5 内置函数
表2.17 字符串对象s的搜索替换函数
函数名 功能
s.find(substr, [start,[end]]) 返回字符串中第一次出现substr的位置,如果字符串中没有substr,则返回-1
s.index(substr, [start,[end]]) 与函数find()相同,但是字符串中没有substr时,返回一个运行时错误
s.replace(oldstr, newstr,[count]) 将字符串中oldstr字符替换为newstr字符,count为替换次数
s.rfind(substr, [start,[end]]) 返回从右侧算起,字符串中第一次出现substr的位置,如果字符串中没有substr,则返回-1
s.rindex(substr, [start,[end]]) 与rfind()相同,字符串中没有substr时,返回一个运行时错误
9
2.5 内置函数
【例】字符串搜索替换函数的应用
s= 'Hello,Python!'
s.find('o')
Out: 4 # 'o'在第4个位置
s.find('o', 6) # 从第6个位置开始查找
Out: 10
s.index('th')
Out: 8
s.index('abc') # index 未找到时将报错, find未找到时返回-1
ValueError: substring not found
'Hello,Python!'.replace('Python', 'Java')
Out: 'Hello,Java!'
'Hello,Python!'.rfind('o') # 从右侧向左侧查找
Out: 10
2.5 内置函数
表2.18 字符串对象s常用的统计函数
函数名 功能
s.count(substr, [start,[end]]) 返回substr在字符串中出现次数。统计范围从字符串的start开始到end结束
len(s) 返回字符串s的长度(注:不要写为s.len())
s = '字符串函数用于处理各种字符串'
s.count('字符串') # 2
len(s) # 14
11
2.5 内置函数
【例】字符串统计函数的应用
'Hello,Python!'.count('o') # 统计'o'的次数
Out: 2
'Hello,Python!'.count('o', 0, 8) # 在[0,8)位置统计'o'的次数
Out: 1
'abab'.count('o') # 统计'o'的次数,不出现则返回0
Out: 0
len('Hello,Python!') # 字符串长度
Out: 13
s = 'egg Egg ham ham EGG eGG'
s.count('egg') # 1 个
s.lower().count('egg') # 4 个
2.5 内置函数
表2.19 字符串对象s的判断函数
函数名 功能
s.startswith(substr) 判断字符串是否以substr开头,是则返回True,否则返回False
s.endswith(substr) 判断是否以substr结尾,是则返回True,否则返回False
s.isalnum() 判断是否完全由字母或数字组成,是则返回True,否则返回False
s.isalpha() 判断是否只由字母组成,是则返回True,否则返回False
s.isdigit() 判断是否只包含数字,是则返回True,否则返回False
s.islower() 判断是否全是小写字母,是则返回True,否则返回False
s.isnumeric() 是否只含0-9或罗马数字或中文数字,是则返回True,否则返回False
s.isspace() 只含空格' ',制表\t,分页\f,换行
符,是则返回True,否则返回False
s.isupper() 判断是否全是大写字母,是则返回True,否则返回False
13
2.5 内置函数
【例】字符串判断函数的应用
'Hello,Python'.startswith('Python') # 判断开头
Out: False
'cat.jpg'.endswith(('.jpg','.bmp','.png')) # 判断结尾
Out:True
'Python3'.isalnum() # 是否全由字母和数字构成
Out: True
'123'.isdigit() # 全为数字
Out: True
'123ⅥⅩ一二'.isnumeric() # ⅥⅩ罗马数字, '一二'中文数字均支持
Out: True
2.5 内置函数
【例】字符串判断函数的应用
'hello,python!'.islower() # 是否全部小写
Out: True
'Hello,Python!'.isupper() # 是否全部大写
Out: False
'Hello,Python!'.isspace() # 是否全部是空格/制表键/回车符等空白字符
Out: False
' \t \f
'.isspace() #空格' '、制表符\t、分页符\f、换行符
均是空白符
Out: True
2.5 内置函数
表2.20 字符串对象s的拆分合并函数
函数名 功能
s.join(seq) 将seq中所有元素以指定的字符串s连接起来
s.split(sep,[num]) 以sep为分隔符(默认空格)拆分字符串,返回列表,num为拆分次数
s = 'I am a student'
lst = s.split() # 默认以空格为分隔符
print(lst)
print(f'单词数={len(lst)}')
16
2.5 内置函数
【例】字符串拆分合并函数的应用
lst = ['Hello', 'Python', 'Java']
','.join(lst)
Out: 'Hello,Python,Java'
'+'.join(['a', 'b', 'c', 'd', 'e'])
Out: 'a+b+c+d+e'
# 默认以空格为分隔符拆分字符串,返回列表
lst = 'Python is a programing language'.split()
Out:['Python', 'is', 'a', 'programing', 'language']
s = '1, 2, 3, 4'
s.split(',') # 此处必须指定以逗号为分隔符
Out: ['1', '2', '3', '4']
2.5 内置函数
表2.21 字符串对象s的对齐函数
函数名 功能
s.center(width [,fillchar]) 返回长度为width的字符串,原串居中对齐,长度不足部分以fillchar填充,默认空格填充
s.ljust(width [,fillchar]) 返回长度为width的字符串,原串左对齐,长度不足部分以fillchar填充,默认空格填充
s.rjust(width [,fillchar]) 返回长度为width的字符串,原串右对齐,长度不足部分以fillchar填充,默认空格填充
s.zfill(width) 返回长度为width的字符串,原串右对齐,长度不足前面填充0
18
2.5 内置函数
【例】字符串对齐函数的应用
'Python'.center(10, '*') # 居中对齐
Out: '**Python**'
'Python'.ljust(10) # 左对齐
Out: 'Python '
'2'.zfill(3) # 填充0
Out: '002'
# 输出金字塔
for x in range(1, 13, 2):
s = '*' * x
print(s.center(21))
2.5 内置函数
2.5.3 其他函数
Python还提供了包括help()、dir()、type()和id()等内置函数,用于查询对象或方法的相关信息。
表2.22 其他函数
函数名 功能
dir([object]) 无object时,返回当前范围内的变量、方法和定义的类型列表;带object时,返回object的属性、方法列表。
help([object]) 返回object(模块、类型、对象、方法、属性)的帮助信息
id(object) 返回object对象的唯一标识符(内存地址)
type(object) 返回object对象的数据类型
dir('abc') # 显示字符串的各种方法
import math
dir(math) # 显示math库内的函数
2.5 内置函数
【例】dir() 、help()、type()和id()函数的应用
(1)dir()函数
dir([1,2,3]) # [1,2,3]是列表,将显示列表对象的方法
(2)help()函数
help(input) # 显示input函数的帮助信息
help('abc'.find) # 显示字符串find方法的帮助
help('abc'.find() ) # 错误, 此处find后面不要有括号
2.5 内置函数
(3)type()函数
x = 123
type(x) # 返回变量x的数据类型
Ou: int
type(3.14), type(True), type([1,2,3])
Out: (float, bool, list)
(4)id()函数
x = 123
id(x) # 返回x变量的唯一标识符,类似内存地址
Out: 1364906032
x = 'abc' # 赋予新值
id(x) # 可见x变量的内存地址已变化
Out: 1454907035 # 说明前后两个x变量只是变量名相同,但内存指向不同
$$