#@[TOC](Grundlagen-grundlegende Datentypen)
一、Python语法
1、几个概念
1.1 表达式
- 表达式:是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合# 一、整数与小数。
- 表达式的特点:
- 表达式一般仅仅用于计算一些结果,不会对程序有实质性的影响
- 如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
# 表达式
1+2 # 表达式
print('hello world')
1.2 语句
- 一个语法自成体系的单位,它由一个词或句法上有关连的一组词构成
- 语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果
i = 6
if i > 5: # 判断语句
# 代码块
print('hello world') # 打印语句
input('请输入') # 输入语句
print('hello world')
1.3 程序
- 程序就是由一条一条的语句和一条一条的表达式构成的
1.4 函数
- 函数就是一种语句,函数专门用来完成特定的功能
- 函数长的形如:xxx()
- 函数的分类:
- 内置函数 : 或者内建函数,就是由语法规定存在的函数,这些函数,包含在编译器的运行时库中,程序员不比单独书写代码实现它,只需要调用既可。
- 自定义函数 : 由程序员自主的创建的函数 当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
- 函数的2个要素
- 参数
- 返回值
print('hello world') # 内置函数
input('请输入') # 内置函数
print('hello world')
# 语法:xxx():
# def xxx(): 自定义函数
# pass
# 函数的参数
# 函数的返回值
print(max(1, 2, 3))
2、 标识符
2.1 关键字
- python一些具有特殊功能的标识符,这就是所谓的关键字关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符
2.2 标识符的概念
- 开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名 、函数名等
组成:由26个英文字母大小写,数字 0-9 符号 _$
标识符的规则: - 1.标识符中可以包含字母、数字、_,但是不能使用数字开头 例如:name1 name_1 _name1 1name(不行)
- 2.Python中不能使用关键字和保留字来作为标识符
命名方式
驼峰命名法 - 小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
- 下划线命名法
- 不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如 get_url buffer_size
# python语言的组成
# 关键字 标识符 注释 变量和数值 运算符 语句 函数 序列
# not = 1
# print(not)
# 标识符 :开发人员在程序开发中自己定义的一些符号和名称
# 标识符的命名规则
# 大驼峰 MyName
# 小驼峰 myName
# 下划线 my_name
3、基本数据类型
- 数据类型指的就是变量的值的类型,也就是可以为变量赋的哪些值。
3.1 整数与小数
- 整数:所有整数。例如:a = 1 b = 10 c = 100 用int表示。
- 小数常量:所有小数。例如:a = 0.1 b = 1.2 c = 2.3 用float表示。
# 整数 init类型
a = 1
b = 100
c = 123_456_789
print(c, type(c))
# 浮点数 float类型
a = 1.1
print(a, type(a))
3.2 布尔值与空值
- 布尔:仲有两个值,一个是True、一个是False。
- None常量:只有一个数值就是None,也就是空值。
# 布尔值 只有两个值, True和False :逻辑判断 True相当于1, False相当于0
print(1+True)
print(1+False)
print(1 + '1')
print(1 + 'True')
打印输出结果:
Traceback (most recent call last):
File "D:\PycharmProjects\基础班第11期\day-03\上课代码\基本数据类型.py", line 15, in <module>
print(1 + '1')
TypeError: unsupported operand type(s) for +: 'int' and 'str'
2
1
# 空值 None 表示没有 表示不存在
a = None
print(1 + None)
print(a)
打印输出结果:
Traceback (most recent call last):
File "D:\PycharmProjects\基础班第11期\day-03\上课代码\基本数据类型.py", line 21, in <module>
print(1 + None)
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
3.3 字符串
3.3.1 什么是字符串?
- 字符串是有数字、字母、下划线组成的一串字符。
- 注:
- 单引号活双引号不能混合使用
- Python中用一对双引号或者一对单引号包裹的内容就是字符串。
# str 表示字符串,是一个关键字
a = 'sabd'
b = "sabd"
print(a is b)
a = 'sdkgjsdkgkd'
b = "what's your name?"
print(a)
print(b)
打印输出结果:
True
sdkgjsdkgkd
what's your name?
3.3.2 转译字符
- 转译字符是一种特殊的字符常量。转义字符以反斜线“\”开头,后面跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
- 总结:
- \t 表示横向制表符
- \v表示纵向制表符
- \n 表示换行符
- \ 表示反斜杠
- ’ 表示 ’
- \ ‘’ 表示 ‘’
# \ 的作用
str1 = 'what \'s your name?'
print(str1)
# \\
a = 'c: \\news'
print(a)
# \t 的作用 横向制表符 四个空格 一个tab 的距离
str1 = '窈窕淑女\t君子好逑'
print(str1)
# \n 的作用 换行符 换行的作用
str1 = '窈窕淑女\n君子好逑'
print(str1)
# r''取消转义, 所有的字符都是原本字符的意思 ,原始字符串
a = r'c: \news'
print(a)
打印输出结果:
what 's your name?
c: \news
窈窕淑女 君子好逑
窈窕淑女
君子好逑
c: \news
3.3.3 长字符串
- 长字符串:又叫文档字符串,我们使用三重引号来表示长字符串‘’‘ ’‘’
- 三重引号可以换行,并且会保留字符串中的格式。
"""
注释的作用
"""
# 长字符串的作用
# 1. 注释的作用
# 2. 保留原始格式的字符串
str1 = """
生命诚可贵,
爱情价更高,
若为金钱故,
二者皆可抛。
"""
print(str1)
打印输出结果:
生命诚可贵,
爱情价更高,
若为金钱故,
二者皆可抛。
3.3.4 格式化字符串
- 第一种:拼串
- 第二种:参数传递
- 第三种:占位符
- %s字符串占位
- %f浮点数占位
- %d整数占位
- 第四种:f’{变量}’
- str.format()
# 格式化字符串
# 拼串
a = 'i love ' + '刘亦菲'
print(a)
# 参数传递
a = 'i love '
print(a, '刘亦菲')
# 占位符
a = 'i love %s' % 1
print(a)
# f''
b = '刘亦菲'
a = f'i love {b}'
print(a)
# format()占位
b = '刘亦菲'
a = 'i love {}'.format(b)
print(a)
打印输出结果:
i love 刘亦菲
i love 刘亦菲
i love 1
i love 刘亦菲
i love 刘亦菲
3.3.5 字符串的其他操作
- len() 字符串的长度
- max() 最大值
- min() 最小值
- split()分割字符串
- join()拼接字符串
- find()查找字符串
- replace() 替换字符串
- partition() 把字符串分割为三部分
- 去空格
- s.strip() 左右两边去空格
- s.lstrip() 去左边空格
- s.rstrip() 去右边空格
- 字符串大小写
- s.upper() 全部大写
- s.lower() 全部小写
- s.isupper() 判断是不是大写
- s.islower() 判断是不是小写
a = 'python '
# len() 求取长度
print(len(a))
# max() min() 按照ascii表格的值来比较大小
print(max(a), min(a))
# split(参数) 分割字符串 参数是你自己去指定分割的规则
a = 'i love 刘亦菲'
b = a.split(' ')
print(b)
# join() 拼接字符串
a = '123456'
b = '-'.join(a)
print(b)
# find() 结果就是这个字符串所在位置的下标(索引),是从0开始的
a = 'i love 刘亦菲'
print(a.find('my'))
# index 查找
# replace 替换
a = 'i love 刘亦菲'
b = a.replace('刘亦菲', '周慧敏')
print(b)
# partition
a = 'i love 刘亦菲'
b = a.partition('ve')
print(b)
# 切片
a = '123456789'
b = a[::-1] # 左闭右开型 [开始位置:结束位置:步长]
print(b)
a.split()
打印输出结果:
7
y
['i', 'love', '刘亦菲']
1-2-3-4-5-6
-1
i love 周慧敏
('i lo', 've', ' 刘亦菲')
987654321
4、 变量
4.1 变量的概念
- 变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变,通俗的讲变量就是给数据起个名字。
- 变量的命名规则:
- 变量名由字母、数字、下划线组成要符合标识符的命名规范
- 数字不能开头
- 不能使用关键字
注:是两个对象相等和两个对象是同一个对象是两个概念
s1 = {'Jerry':'Python'}
import copy
s2 = copy.deepcopy(s1)
print(s2) # {'Jerry':'Python'}
print(id(s1),id(s2))
print(s1 == s2)```
4.2 变量的运算
- 变量的运算就是正常的四则运算 ,需要注意的是在运算过程中含有浮点数,那么它返回的就是一个浮点数类型
课后作业
- 作业01:a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
'''
a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
'''
# 方法一:直接赋值
# a = 8
# b = 6
# 方法二:交换
a = 6
b = 8
c = b
b = a
a = c
print(a)
print(b)
- 作业02:
完成字符串的逆序以及统计
• 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
• 打印出字符串长度
• 使用切片逆序打印出字符串
'''
2. 完成字符串的逆序以及统计
• 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
• 打印出字符串长度
• 使用切片逆序打印出字符串
'''
while True:
str1 = input('请输入字符:')
if len(str1) < 31:
print('请重新输入字符!')
else:
print(len(str1))
print(str1[::-1])
打印输出结果:
请输入字符:sl;kdvkjswbvik;jwbgijk;ebnik;jbzkl;jbkij;asb;jksdfdsf
53
fsdfdskj;bsa;jikbj;lkzbj;kinbe;kjigbwj;kivbwsjkvdk;ls
请输入字符:
- 作业03:
要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度6-20,用户名必须以字母开头
• 密码长度至少6位,不能为纯数字,不能有空格
# 判断输入的字符串是否为纯数字的方法 变量.isdigit()语句
# 判断输入的字符串是否为纯字母的方法 变量.isalpha()语句
# 判断输入的字符串是否为数字与字符的组合 变量.isalnum()语句
'''
3. 要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度6-20,用户名必须以字母开头
• 密码长度至少6位,不能为纯数字,不能有空格
'''
while True:
name = input('请输入用户名或账户:')
password = input('请输入账户密码:')
# 判断用户名或账户是否合法
if len(name) < 6:
print('您输入的用户名或账户小于6位,请重新输入!')
continue
elif len(name) > 20:
print('您输入的用户名或账户大于20位,请重新输入!')
continue
elif not name[0].isalpha():
print('您输入的用户名或账户首字母必须是字母开头,请重新输入!')
continue
# 判断账户密码是否合法
if len(password) < 6:
print('您输入的账户密码长度小于6位,请重新输入!')
continue
elif password.isdigit():
print('您输入的账户密码不能为纯数字,请重新输入!')
continue
# print('恭喜您注册成功!\n您的账户:{} \n 您的密码:{}'.format(name, password))
elif password != password.replace(' ',''):
print('您输出的密码中存在空格等非法字符,请重新输入!')
# 变量.replace(old, new, [max])。此方法用于字符串的修改,将字符串str中的字符old替换为新的new字符串,max是可选参数,可以写也可以不写,不写的情况下,表示将str中所有的old替换为new,写之后表示最大替换次数。最后将修改后的字符串给返回,他是有返回值的。
# 此方法用在这里的意思是将new这个空置替换成空格值。如果输入的密码不等于语法使用后的密码,那么输入的密码中就存在空格。
else:
print('恭喜您注册成功!\n您的账户:{}\n您的密码:{}'.format(name, password))
打印输出结果:
E:\python\python.exe D:/PycharmProjects/基础班第11期/day-03/作业/作业+03.py
请输入用户名或账户:111111
请输入账户密码:111111
您输入的用户名或账户首字母必须是字母开头,请重新输入!
请输入用户名或账户:k111111
请输入账户密码:1111111
您输入的账户密码不能为纯数字,请重新输入!
请输入用户名或账户:k111111
请输入账户密码:kghg kjkjkh
您输出的密码中存在空格等非法字符,请重新输入!
请输入用户名或账户:k111111
请输入账户密码:i111111
恭喜您注册成功!
您的账户:k111111
您的密码:i111111
请输入用户名或账户: