python的基础
1.python几个基础概念
1.1.表达式
- python表达式可以是值,变量和运算符的组合,单独的一个值也是表达式,单独的变量也是一个表达式,表达式是python最常见的代码
表达式特点
- 表达式一般仅仅用于计算一些结果、不会对程序产生实质性的影响
- 如果在交互模式中输入一个表达式、解释器会自动将表达式的结果输出
- 表达式运算具有优先级
1.2.语句
- 一个语法上自成体系的单位,它由一个词或句法上有关连的一组词构成
- 语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果
1.3.程序(program)
- python程序是由一个个表达式和一个个语句所组成的,并由python解释器负责执行
#例
a=1
print(a)
#这就是一个语句
1.4.函数(function)
- 函数是指组织好的,可重复使用的,用来实现单一或相关联功能的代码段,python函数包含系统中自带的一些函数,第三方函数,以及用户自定义函数
- 含数是可以实现一些特定的小方法或是小程序,在python中有很多内建函数
内建函数是python系统中自带的函数,比如:dir() type()等等,不需要我们自己编写 - 还有一种是第三方函数,就是其他程序员编好的一些函数共享给大家使用
- 如何自己定义一个函数?
定义函数需要用到def语句,具体的定义函数语法格式如下所示
def gerrt_user():
print('hello,world')
#def开头,代表定义函数
#def和函数名中间一定要记得敲一个空格
#函数名后面跟括号(),代表定义的是函数,里边可以加参数
#括号后面一定要加冒号:,这个很重要
#代码块部分,是由语句组成,要有缩进
- 要使用这个函数,可调用它,函数调用python执行函数的代码,要调用函数,可依次指定函数名以及用括号括起来的必要信息,由于这个函数不需要任何信息,应此调用它时只需输入greet_user()即可,它将打印hell,oworld,如下
2.标识符
2.1.标识符的概念
- python中的标识符是用于识别变量,函数,类,模块以及其他对象名字
2.2.标识符命名规则
- 标识符由大小写字母,数字以及下划线(_)组成
- 虽然表示可以以下划线_开头,但是尽量不要以下划线开头,有特殊意义
- 但标识符不能以数字开头
我这里以数字开头就报错了
- 命名有大小写区分
- 还有大驼峰:第一个单词以小写字母开始、第二个单词的首字母大写、例如:myName、aDog
- 还有小驼峰:每一个单词的首字母都采用大写字母、例如:FirstName、LastName
2.3.关键字和保留字
- 保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名
- win+r键,输入cmd,输入python进入交互环境
import keyword
keyList = keyword.kwlist
print(keyList)
保留字 | 含义 |
---|---|
and | 用于表达式运算,逻辑与操作 |
as | 用于类型转换 |
assert | 断言,用于判断变量或条件表达式的值是否为真 |
class | 用于定义类 |
continue | 继续执行下一次循环 |
def | 用于定义函数或方法 |
del | 删除变量或者序列的值 |
elif | 条件语句 与if else 结合使用 |
else | 条件语句 条件语句,与if,elif结合使用。也可以用于异常和循环使用 |
except | 包括捕获异常后的操作代码,与try,finally结合使用 |
exec | 用于执行python语句 |
for | 循环语句 |
finally | 用于异常语句,出现异常后,始终要执行finally包含的代码块。与try,except结合使用 |
from | 用于导入模块,与import结合使用 |
global | 定义全局变量 |
if | 条件语句,与else,elif结合使用 |
import | 用于导入模块,与from 结合使用 |
in | 判断变量是否存在序列中 |
is | 判断变量是否为某个类的实例 |
lambda | 定义匿名函数 |
not | 用于表达式运算,逻辑非操作 |
or | 用于表达式运算,逻辑或操作 |
pass | 空的类,函数,方法的占位符 |
打印语句 | |
raise | 异常抛出操作 |
return | 用于从函数返回计算结果 |
try | 包含可能会出现异常的语句,与except,finally结合使用 |
while | 循环语句 |
with | 简化Python的语句 |
yield | 用于从函数依次返回值 |
3.基本数据类型
3.1数据类型概念
-
基本数据类型:数据类型指的就是变量值的类型、也就是可以为变量赋哪些值、不同的数据类型对应的值并不一样
-
number:数值类型 (就是数字,支持int\float\bool\complex类型)
-
str:字符串类型 (是有数字、字母、下划线组成的一串字符,用于对应显示当中的数据。创建方法:通过用引号括起来的一串字符用“=”指向一个变量)
-
list: 列表 (有序、可变的序列集合。创建方法:将所有的元素放在[ ] 并用“=”指向一个变量即创建了一个列表)
-
Tuple:元组 (不可变的list有序序列,一旦创建无法修改。创建方式:将所有元素放在 ()当中并用“=”指向一个变量)
-
set : 集合 (是Python基本的数据类型之一,分为可变set()和不可变(frozenset)两种,一般应用比较少)
-
dict:字典 (基于哈希表存储键值对的一种映射机构数据类型。 创建方式:将键值对元素放入{ }当中并用“=”指向一个变量)
-
int: 整数(Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等,计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等)
-
float:浮点数(浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等)
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差 -
bool:布尔( 布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
布尔值可以用and、or和not运算
and运算是与运算,只有所有都为 True,and运算结果才是 True。
or运算是或运算,只要其中有一个为 True,or 运算结果就是 True。
not运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True)
3.2.如何查看数据类型
用type()函数
例
4.变量
- 变量:变量是计算机内存中的一块区域、存储规定范围内的值、值可以改变、通俗的说就是给数据起个名字
变量命名规则:
- 变量名由字母、数字和下划线组成、要符合标识符的命名规范
- 数字不能开头
- 不能使用关键字和保留字
5.字符串
5.1.字符串含义
- 字符串:字符串是由字母、数字和下划线组成的一串字符
- 单引号与双引号不能混合使用
- Python中用一对双引号或者一对单引号包裹的内容就是字符串引用不能嵌套
5.2.转义字符
转义字符 | 描述 |
---|---|
\\ | 续行符 |
\’ | 单引号 |
\" | 双引号 |
\b | 退格(backspace) |
\e | 转义 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
print('Hello\''
' World!')
print('C:\\Windows\\System32')
print('I\'am woodman')
print("我要学习\"Python\"")
print('linux\b')
print('linux\ngood!') # 会换行输出good
print('Python\vgood!') # good会加上纵向制表符
print('Python\t good!') # good会加上横向制表符,相当于tab键
print('woodman\r good!')
print('woodman\f good!') # 比较少用
5.3.长字符串
# 作用一:注释的作用
"""
懂的都懂
"""
# 作用二:保留格式
c = """
关关雎鸠,
在河之洲,
窈窕淑女,
君子好逑
"""
print(c)
#输出内容
# 关关雎鸠,
# 在河之洲,
# 窈窕淑女,
# 君子好逑
5.4.占位符
# 占位符 %s
s = 'i love %s'%'you'
print(s)
#输出内容:i love you
5.5.格式化字符串
# 格式化字符串:将字符串不可改变的属性格式化、然后将它的内容改变
a = "abc" #不可变数据类型
#改变成abcdef
- 拼串
# 拼串
b = "def"
print(a + b)
#输出内容:abcdef
- 传参
# 参数的传递
print('b = ',b)
- f"
# f "
y = '钱'
x = '玩'
str1 = f'i love {y},{x}'
print(str1)
#输出内容:i love 钱,玩
- format
# format
str2 = 'i love {},{}'.format(y,x)
print(str2)
#输出内容:i love 钱,玩
5.6占位符
- %s 字符串占位符
- %f 浮点数占位
- %d 整数占位
# 占位符 %s
s = 'i love %s'%'you'
print(s)
#输出内容:i love you
6.id地址
6.1.判断 id 地址相等和值相等
- " is " 判断的是 id 地址是否相等
- " == " 判断的是值是否相等
d = [1,2,3]
c = [1,2,3]
print(d == c)
print(d is c)
# 二个输出函数的返回值均是布尔值
# 前者为True、后者为Flase
6.2.打印id地址
- 任何一个整数在内存当中都是有固定的位置的
a = 1
b = 1
print(id(a),id(b))
#输出内容:1984785424 1984785424
#地址相等
c = [1,2,3]
d = [1,2,3]
print(id(c),id(d))
#输出内容:2712853120264 2712853120008
#地址不相等
- 在 python console 里面划分的内存比pycharm分配的小
- 存不下的只能存在硬盘里面去、以有借用了硬盘的地址(只是借用)、地址不是固定的
- pycharm里面的内存比较大、整数都可以有特定的地址
# python console环境里
a = 12345678923456
b = 12345678923456
print(id(a),id(b))
#输出内容:271285312026424 271285312000835
#地址不相等
8.作业
- a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
方法一:
# a = 6、b = 8、我想让a和b的值交换、二种方法实现
def demo3(a, b):
a = a + b # a = 14
b = a - b # b = 6
a = a - b # a = 8
print(a, b)
方法二:
def demo1(a,b):
temp = a
a = b
b = temp
print(a,b)
要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度6-20,用户名必须以字母开头
• 密码长度至少6位,不能为纯数字,不能有空格
while True:
# 账号检查
Id = input('请输入用户名:')
list_Id = list(Id)
head_num = list_Id[0] # 获取第一个输入字符
if head_num.isalpha() == False: # 判断首字母是否为字符
print('首字母必须为字母,请重新输入。。。。')
if len(Id) < 6 or len(Id) > 20: # 判断字符串长度
print('用户名长度为6-20,请重新输入。。。。')
else:
# 密码检查
pw = input('请输入密码:')
if len(pw) < 6:
print('密码长度不足!!!')
if pw.isdigit() == True: # 判断密码是否为纯数字
print('密码不能为纯数字!!!')
for i in pw:
if i.isspace() == True: # 判断密码中是否存在空格
print('密码不能有空格!!!')
else:
break