python学习第三课
1.python基础
1.1 python语法
1.1.1 概念
(1)表达式
表达式,是由数字、算符、数字分组符号(扣号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
表达式特点:
- 表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响
- 如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
(2)语句
一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成。语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果。
(3)程序
程序就是一条一条语句和一条一条表达式构成的
(4)函数
函数就是一种语句,专门用来完成特定的功能
- 函数形如:xxx()
- 函数的分类:
- 内置函数。或者叫内建函数,就是由语法规定存在的函数,这些函数,包含在编译器的运行时库中,程序员不比单独书写代码实现它,只需要调用即可。
- 自定义函数:由程序员自主的创建的函数,当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
- 函数的2个参数:
- 参数
- 返回值
1.1.2 标识符
(1)关键字
python一些具有特殊功能的标识符,这就是所谓的关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符。
(2)标识符概念
开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名、函数名等
- 组成:由26个英文字母大小写,数字0-9,符号_$
- 标识符规则:
- 标识符中可以包含字母、数字、_,但是不能使用数字开头
- python中不能使用关键字和保留字(也即关键字)来作为标识符
- 命名方式
- 驼峰命名法
- 小驼峰式命名法:第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
- 大驼峰式命名法:每一个单字的首字母都采用大写字母,例如:FirstName、LastName
- 下划式命名法
- 在程序员中还有一种命名法比较流行,就是用下划线”_"来连接所有的单词,比如get_url buffle_size
- 驼峰命名法
1.2 变量
1.2.1 概念
变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变,通俗的说变量就是给数据起个名字。
- 变量命名规则
- 变量名由字母、数字、下划线组成要符合标识符的命名规范
- 数字不能开头
- 不能使用关键字
- 注意:
两个对象想等和两个对象是同一个对象是两个概念
变量在内存中存储的数据:id (内存地址) type(类型) value(值)
1.3 变量在内存中的原理
2. 基本数据类型
数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值。
2.1 整数和小数
- 整数。所有整数。例如:a=1, b=100 ,c=999都是int类型
- 小数常量(浮点数):所有小数。例如a=1.2,b=6.6是float类型
2.2 布尔值和空值
- 布尔:只有2个值,一个是True,一个是False
- None常量:只有一个数值就是None 也就是空值
*如下图所示, None表示没有,它是NoneType类的对象,你可以把它看成是一个具体的值。正因它是一个具体的值,所以它可以用来初始化变量,可以作为很多函数在某些异常输入下的返回值,可以在tensorflow的placeholder变量中为模型输入样本数变量占位。None它既有又没有,有体现在它是具体的值,例如它能为变量a赋值;没有体现在None它想告诉你的是当前变量a绑定的是一个没有意义,没有利用价值的值。
- null的含义
- Null表示空它不是一个值,这点不同于None。在python这类脚本语言中变量和值是绑定关系,如果说一个变量是Null,实际是说它没有与任何值绑定,也就是说该变量实际上并未被定义;在java、C++、C这类编译语言中,我们说一个变量为Null,是指该变量所指向的那个内存空间上没有存储任何值,就连上一次使用过该内存空间的残留值都没有。
2.3 字符串
2.3.1 概念
字符串是由数字、字母、下划线组成的一串字符。
- 注意:
- 单引号或双引号不能混合使用
- python中用一对双引号或者一对单引号包裹的内容就是字符串
2.3.2 转义字符
转义字符是一种特殊的字符常量。转移字符以反斜杠""开头,跟一个或几个字符。转义字符具有特定的含义,不同与字符原有的意义,故称“转移”字符
-
\t表示制表符(一个Tab键)
-
\n表示换行符
-
\\表示反斜杠
-
\‘表示’
-
\“表示”
2.3.3 长字符串
长字符串又叫做文档字符串,使用三重引号来表示一个长字符串’’’ ‘’’
三重引号可以换行,并且会保留字符串中的格式。
2.3.4 格式化字符串
- 拼串。
- 参数传递。
- 占位符。
-
%s 字符串占位
-
%f 浮点数占位
-
%d 整数占位
-
- f’{变量}’
- str.format()
2.3.5 字符串的其他操作
- len() 字符串的长度
- max() 最大值
- min() 最小值
- str.split() 分割字符串
- str.join() 拼接字符串
- str.find() 查找字符串
- srt.replace() 查找字符串
- str.partition() 把字符串分割为三部分
- 去空格
- s.strip() 左右两边去空格
- s.lstrip() 去左边空格
- s.rstrip() 去右边空格
- 字符串大小写
- s.upper() 全部大写
- s.lower() 全部小写
- s.isupper() 判断是不是大小写
- s.islower() 判断是不是小写
3. 第三讲作业
(1) a,b=6,8,想让a=8,b=6该怎么办?用两种方式实现
- 第一种方式
- 第二种方式
(2) 完成字符串的逆序以及统计 - 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
- 打印出字符串长度
- 使用切片逆序打印出字符串
while True:
# 获取键盘输入
str_input = input("请任意输入一个字符串(长1-31):")
# 测试长度:
if len(str_input)<1 or len(str_input)>31:
print("长度超出限制,请重新输入")
continue
else:
# 打印其长度并逆序打印字符串
print("您输入的字符串:%s"%str_input)
print("你输入%s的长度是%d" % (str_input, len(str_input)))
print("逆序为:%s"%str_input[::-1])
(3)要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
- 用户名长度6-20,用户名必须以字母开头
- 密码长度至少6位,不能为纯数字,不能有空格
while True:
# 获取键盘输入
name = input("请输入用户名:")
passwd=input("请输入密码:")
# 测试长度:
if len(name) < 6 or len(name) > 20:
print("输入格式错误,6-20")
print("请重新输入")
break
if name[0] not in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM":
print(name[0])
print("用户名开头必须是字母")
print("请重新输入")
# 如果不正确直接使用return,终结函数的执行
break
if len(passwd) < 6 or passwd.isdigit() or " " in passwd: # isdigit 数字的意思 ' '两个双引号代表空格
print("密码长度至少6位,不能为纯数字,不能有空格")
print("请重新输入")
# 如果不正确直接使用return,终结函数的执行
break
print("验证成功")