Python学习第三课-基本数据类型
一、基本概念
1.1表达式
表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
1.2语句
1.3程序
相当于一个功能
1.4函数
查看函数 command+鼠标左键
def xxx():
pass #占位,相当于完成函数
内置函数
内部已经有的函数
自定义函数
自己定义的函数
参数
a = input("请输入输入") #输入语句 ()的就是参数
返回值
函数执行的结果
二、标识符
2.1 关键字
查看关键字
#导入keyword 模块
import keyword
#显示所有关键字
keyword.kwlist
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’,‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
2.2标识符概念
- 组成
标识符有字母、数字、下划线组成 - 命名规范
- 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
- 标识符不能和 Python 中的保留字相同。
- Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
例如,下面所列举的标识符是合法的:
UserID
name
mode12
user_age
以下命名的标识符不合法:
4word #不能以数字开头
try #try是保留字,不能作为标识符
$money #不能包含特殊字符
驼峰命名法
- 小驼峰
变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如
int myStudentCount; #变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
常用于函数名。
- 大驼峰
大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等
下划线命名法
my_name
三、数据类型
3.1整数和小数
- 整数(int)
- 小数(float)
3.2布尔值和空值
- 布尔:True和False
- None常量:空值
3.3字符串
- 数字、字母、下划线
- 单引号,双引号成对的引号
3.3.1转义字符
转义字符 | 意义 |
---|---|
\n | 换行 |
\t | 跳到下一个tab位置 |
\r | 回车 |
r | 保持原来字符串的效果 |
\ | 转移还原本意。标识后面的一个字符不具有特殊意义 |
3.3.2长字符串
- python里使用某个东西的规则
- python里面使用的东西要么是python自带所拥有的的,那么你就可以用
- 如果不是python所自带的。那么你必须先声明这个东西,你才可以用
3.3.2.1作用
- 1.保持文本的格式的作用
- 2.作为一个注释的作用
- 字符串的表示 Str
- ‘’‘ 三引号
3.3.2.2格式化字符串
- 第一种格式化字符串,拼串
a ="a"
b ="b"
print(a+b)
结果
ab
- 第二种格式化字符串,参数传递
- 第三种格式化字符串,占位符
s="我爱你%s"%"china"
print(s)
结果
我爱你china
%s 字符串占位
%f 浮点数占位
%d 整数占位
- 第四种格式化字符串f{变量}’
str.format ()
a ="中国"
s=f"我爱你{a}"
print(s)
我爱你中国
- 第五种格式化字符串{}.format()’
a ="中国"
c="我爱你{}".format(a)
print(c)
我爱你中国
3.3.2.3操作函数
max(str)
返回字符串 str 中最大的字母。
min(str)
返回字符串 str 中最小的字母。
- string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串
string.partition(str)
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
a="我爱你中国"
print("max(str)结果为'{}'".format(max(a)))
print("min(str)结果为'{}'".format(min(a)))
print("string.split结果为'{}'".format(a.split('爱你')))
print("string.partition(str)结果为'{}'".format(a.partition('爱你')))
结果如下:
max(str)结果为’爱’
min(str)结果为’中’
string.split结果为’[‘我’, ‘中国’]’
string.partition(str)结果为’(‘我’, ‘爱你’, ‘中国’)’
str.join(sequence)
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
结果如下:
a-b-c
str.index()
Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
str1 = "this is string example....wow!!!";
str2 = "exam";
print(str1.index(str2))
print(str1.index(str2, 10))
print(str1.index(str2, 40))
结果如下:
15
15
Traceback (most recent call last):
File “/Users/mianhua/PycharmProjects/python/2021/2121年4月15日/01.py”, line 5, in
print(str1.index(str2, 40))
ValueError: substring not found
Python find()
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
str1 = "this is string example....wow!!!";
str2 = "exam";
print(str1.find(str2))
print(str1.find(str2, 10))
print(str1.find(str2, 40))
结果如下:
15
15
-1
四、变量
4.1 存储内容
- id:内存地址
- type :数据类型
- value:值
作业1
a,b= 6, 8。 我想让a=8 b=6 我该怎么办?用2种方式实现
def demo1(a,b):#创建临时变量 temp ,并将 a 的值存储在 temp 变量中,接着将 b 值赋给 a,最后将 temp 赋值给 b 变量。
temp = a
a = b
b = temp
print('交换后a的值为: {}'.format(a),'交换后b的值为: {}'.format(b))
def demo2(a,b):
a,b = b,a
print(a,b)
def demo3(a, b):
a = a + b
b = a - b
a = a - b
print(a,b)
if __name__ == '__main__':
demo1(6,8)
demo2(6,8)
demo3(6,8)
结果如下:
8 6
8 6
8 6
#update——实现输入任意整数,交换位置
a = int(input('输入a值: '))
b = int(input('输入b值: '))
def demo1(a,b):#创建临时是变量
temp = a
a = b
b = temp
print(a,b)
def demo2(a,b):#交换位置
a,b = b,a
print(a,b)
def demo3(a, b):#数学计算法,加法,乘法都可以
a = a + b
b = a - b
a = a - b
print(a,b)
if __name__ == '__main__':
demo1(a,b)
demo2(a,b)
demo3(a,b)
结果如下
输入a值: 123
输入b值: 456
456 123
456 123
456 123
#update——增加交互提示
a = int(input('输入a值: '))
b = int(input('输入b值: '))
print('初始 a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo1(a,b):
temp = a
a = b
b = temp
print('交换后 a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo2(a,b):
a,b = b,a
print('交换后 a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo3(a, b):
a = a + b
b = a - b
a = a - b
print('交换后 a的值为: {}'.format(a), ',b的值为: {}'.format(b))
if __name__ == '__main__':
demo1(a,b)
demo2(a,b)
demo3(a,b)
结果如下:
输入a值: 789
输入b值: 426
初始 a的值为: 789 ,b的值为: 426
交换后 a的值为: 426 ,b的值为: 789
交换后 a的值为: 426 ,b的值为: 789
交换后 a的值为: 426 ,b的值为: 789
#update——更新demo3为字符串切片法,之前的数据计算法,受限于输入的数据类型,无法处理字符串类型
a = input('输入a值: ')
b = input('输入b值: ')
print('初始 a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo1(a,b):#创建临时是变量
temp = a
a = b
b = temp
print('临时变量法: a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo2(a,b):#交换法
a,b = b,a
print('交换位置法: a的值为: {}'.format(a), ',b的值为: {}'.format(b))
def demo3(a, b):#
a =a+b
b =a.split(b)
a =a.split(b[0])
print('字符串切片法: a的值为: {}'.format(a[1]), ',b的值为: {}'.format(b[0]))
if __name__ == '__main__':
demo1(a,b)
demo2(a,b)
demo3(a,b)
结果如下:
输入a值: abc
输入b值: xyz
初始 a的值为: abc ,b的值为: xyz
临时变量法: a的值为: xyz ,b的值为: abc
交换位置法: a的值为: xyz ,b的值为: abc
字符串切片法: a的值为: xyz ,b的值为: abc
作业2
完成字符串的逆序以及统计
- 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
- 打印出字符串长度
- 使用切片逆序打印出字符串
测试字符串:
0123456789012345678901234567890123456789
0123456789
def demo():
content=input('请输入字符串:')
if len(content)>30:
print('您输入的字符串长度大于30,请重新输入')
demo()
else:
print('您输入的字符是:'+content)
print('字符串长度是:'+str(len(content)))
print('切片逆序打印为:'+str(content[::-1]))
demo()
结果如下
请输入字符串:0123456789012345678901234567890123456789
您输入的字符串长度大于30,请重新输入
请输入字符串:0123456789
您输入的字符是:0123456789
字符串长度是:10
切片逆序打印为:9876543210