【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类_run shell和run module

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

li = (1,2,3,4)
class IndexTuple:
def __init__(self,*args): # args元组不定长参数拿到是一个元组
self.values = args
self.index = tuple(enumerate(self.values)) # 通过枚举enumerate的方法将下标索引和自身的元素组成一个大大的元组
print(self.index)
def __len__(self):
return len(self.values)
def __getitem__(self,key): # 通过下标索引key取值
return self.index[key]
return self.values[key]
def __repr__(self):
return str(self.values) # 只能返回字符串
my_t = IndexTuple(1,2,3,34)

可迭代对象 --> 取值,像字符串,元组,列表,集合,字典能够被如循环取值一个一个拿取到元素的数据类型

li = [1,2,3,4,5] # 可迭代对象
li1 = iter(li) # 将可迭代对象转成一个迭代器对象,迭代器对象就是能够被next一个一个将值取出
next(li1)

迭代器协议

class Number:
def __init__(self,end):
self.start = 0
self.end = end
def __iter__(self): #构建一个迭代器对象
return self
def __next__(self): #对迭代器对象取值
self.start += 1
if self.start <= self.end: #当self.start值小于self.end
return self.start #返回self.start
else:
raise StopIteration #抛出终止迭代异常
nu = Number(6)
for i in nu:
print(i)
# 也可以用next(nu)函数去调用

上下文协议: 计时器,所谓的秒表,检测代码运行时长

import time #时间模块
class RunTime:
def __enter__(self): #接收代码开始时间
self.star_time = time.time() #获得当前开始时间
return self.star_time
def __exit__(self,exc_type,exc_val,exc_tb):
self.end_time = time.time() #获取当前结束时间
self.run_time = self.end_time - self.star_time #代码运行时间
print('代码运行时间为:',self.run_time)
with RunTime(): #使用方法
# 要执行的代码,运行时长
pass

生成器和装饰器

生成器等同于迭代器 yield 关键字返回值 next获取值

def func():
print(1)
yield 2 # 和return一样有一个暂停函数的功能,并且遇到下一个next会继续向下执行
print(3)
yield 4
print(5)
yield 6
a = func()
for i in a:
print(i)
# 或者使用next(a),通过next获取值得到返回值

装饰器:闭包加回调函数

def fun(x):
def fun1(aa, bb):
print(aa, 'and:', bb)
return x(1, 2)
print('外层函数')
return fun1
@fun
def func(cc, dd):
print('这是func的值:', cc, dd)
func(3, 4)

内置装饰器

class Person:
def __init__(self,name,age):
self.name = name
self.age = age
@classmethod # 第一个参数自动传入类
def learn(cls): # cls=Person
print(f'{zl.name}在学习')
print(cls)
@staticmethod #不在自动传入self
def sleep():
print(zl.name)
print('在睡觉')
zl = Person('z',18)
Person.learn()
Person.sleep()

五、常用操作

格式化操作

%方式

format方法

常用函数

print():输出函数

input():输入函数

type():查看数据类型

id():查看内存地址

eval():去除双引号

异常信息

try:

​ pass

except Exception as e: # 保错后键异常信息存储在e中

​ pass

finally: # 无论报不报错都运行

​ pass

异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
GeneratorExit生成器(generator)发生异常来通知退出
Exception常规错误的基类
StopIteration迭代器没有更多的值
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

六、文件管理

文件读写

文件打开

相对路径:在py脚本文件同级目录下的文件 .\同级目录 …\上级目录
绝对路径:完整的路径

文件读写mode

a追加模式下,如果文件不存在,也会自动帮我们创建一个文件,之后在写入内容
和w只写的区别就是一个是清空再写入,一个是继续向后写

文件操作

打开

file = open(“FilePath”, mode=“type”(, encoding=“”)) # 要记得关闭文件

pass

file.close()

with open(“FilePath”, mode=“type”(, encoding=“”)) # 上下文管理器打开,可以不用关闭

写入

file.writre(“content”) # write()方法:需要传入一个字符串做为参数,否则会报错

file.writelines() # writelines()方法:既可以传入字符串又可以传入一个字符序列,并将该字符序列写入文件

读取

file.read() # read()方法:一次性读如并返回文件的所有内容

file.readlines() # readlines()方法:每次读取一行;返回的是一个字符串对象,保持当前行的内存。一次性读取整个文件;自动将文件内容分析成一个行的列表

遍历读取

  • 文件对象本身可以迭代,并且以行的形式读取
  • | | |
    | — | — |
    | | for i in file: |
    | | print(i) |

指针

file.tell() # tell()方法:返回文件的当前位置,即文件指针当前位置。

file.seek() # seek()方法:用于移动文件读取指针到指定位置。

  • seek第一个参数:移动的长度(字节);如果该值为负数,表示从后往前移动n个字节
  • seek第二个参数:0从开头(默认),1从当前,2从末尾
OS模块
方法含义
os.sep符合当前系统的路径分割符,Linux/windows\
os.name返回操作系统类型windows“nt”Linux“posix”
os.rename更改文件名,传递两个参数(旧文件名,新文件名)
os.getcwd返回当前的工作目录
os.listdir列出指定目录下的目录和文件
os.chdir修改当前的工作路径
os.mkdir创建目录
os.makedirs递归创建目录
os.remove删除文件
os.rmdir删除文件夹(文件夹下内容为空)
os.removedirs递归删除文件夹
os.system执行系统命令
os.popen执行系统命令,会将结果以文件的形式返回
os.walk通过在目录树中游走输出在目录中的文件名,向上或者向下
os.path.join连接目录和文件名。os.path.join(path,name)
os.path. isfile判断指定对象是否为文件。是返回True,否则False
os.path.isdir判断指定对象是否为目录。是True,否则False
os.path. split返回路径的目录和文件名
os.path. exists检验指定的对象是否存在。是True,否则False
os.path.getsize获取指定对象的文件大小
os.path.abspath获得绝对路径
os.path.basename返回文件名
os.path.dirname返回文件所在目录
sys模块
方法含义
sys.argv获取命令行参数列表,第一个元素是程序本身
sys.exit(n)退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常
sys.version获取Python解释程器的版本信息
sys.maxsize最大的Int值,64位平台是2**63 - 1
sys.path返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform返回操作系统平台名称
sys.stdin输入相关
sys.stdout输出相关
sys.stderr错误相关
sys.exc_info()返回异常信息三元元组
sys.getdefaultencoding()获取系统当前编码,默认为utf-8
sys.setdefaultencoding()设置系统的默认编码
sys.getfilesystemencoding()获取文件系统使用编码方式,默认是utf-8
sys.modules以字典的形式返回所有当前Python环境中已经导入的模块
sys.builtin_module_names返回一个列表,包含所有已经编译到Python解释器里的模块的名字
sys.copyright当前Python的版权信息
sys.flags命令行标识状态信息列表。只读。
sys.getrefcount(object)返回对象的引用数量
sys.getrecursionlimit()返回Python最大递归深度,默认1000
sys.getsizeof(object[, default])返回对象的大小
sys.getswitchinterval()返回线程切换时间间隔,默认0.005秒
sys.setswitchinterval(interval)设置线程切换的时间间隔,单位秒
sys.getwindowsversion()返回当前windwos系统的版本信息
sys.hash_info返回Python默认的哈希方法的参数
sys.implementation当前正在运行的Python解释器的具体实现,比如CPython
sys.thread_info当前线程信息

七、模块和包

模块

其是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

导包

import 包名 # 导入模块

import 模块名 as 别名

from 模块名 import 成员名 as 别名

from 模块名 import 成员名

from 模块名 import * # 从模块中导入所有方法

【第七小节:python(变量类型)】

其实大一上就简单学了下python,跟着书做了下飞机大战和爬豆瓣的爬虫,但现在好像连python基本语法都不记得了。刚好这个学期要有自学opencv和strcpy的需求,所以借此机会重温下py,用的资料就是《python编程从入门到实践》。我就慢慢从头开始过下基础知识,现在就当成云笔记了,希望也对和我一样的小白有些许帮助,同时若有大佬能对我指点一二我就感激不尽啦。

变量赋值

python是一种解释型语言,和我学的c完全不一样,同时注意的地方也有许多,缩进,继承,类,等等。

counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = “John” # 字符串

print(name)

在这里插入图片描述

多个变量赋值

a, b, c = 1, 2, “john”
a = b = c = 1

标准数据类型

number

var1 = 1
var2 = 10

删除的话:

del var1

Python支持四种不同的数字类型:

int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)(复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。)

string(字符串)

python的字串列表有2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
eg:
a b c d e
0 1 2 3 4
-5 -4 -3 -2 -1
"切片“是python很强大的一个功能,用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。左闭右开

s = ‘abcdef’
print(s[1:5])

在这里插入图片描述

可以像C语言数组一样使用切片功能。
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:

str = ‘Hello World!’

print (str) # 输出完整字符串
print (str[0]) # 输出字符串中的第一个字符
print (str[2:5]) # 输出字符串中第三个至第六个之间的字符串
print (str[2:]) # 输出从第三个字符开始的字符串
print (str * 2) # 输出字符串两次
print (str + “TEST”) # 输出连接的字符串

在这里插入图片描述
Python 列表截取可以接收第三个参数,参数作用是截取的步长,在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串

list(列表) (用【】)

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

操作和string类似

tuple(元组)(不能二次赋值)(用())

元组是另一个数据类型,类似于 List(列表)。

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

tuple = ( ‘runoob’, 786 , 2.23, ‘john’, 70.2 )
tinytuple = (123, ‘john’)

同切片操作

dictionary (字典)(用{})

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

dict = {} # 创建空字典
dict[‘one’] = “This is one” # 为字典赋键值对
dict[2] = “This is two”

tinydict = {‘name’: ‘runoob’, ‘code’: 6734, ‘dept’: ‘sales’}
print(dict[‘one’]) # 输出键为’one’ 的值
print(dict[2]) # 输出键为 2 的值
print(dict)
print(tinydict) # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values()) # 输出所有值

在这里插入图片描述
注意编码格式为UTF-8

Python数据类型转换

int(x [,base])

将x转换为一个整数

long(x [,base] )

将x转换为一个长整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value)元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为Unicode字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串
python内置函数好多啊

【第八小节:Python数据类型转换】

一 自动类型转换

(针对于Number类型) bool float int complex

当Number不同的数据类型进行运算的时候,默认向更高精度转化

精度从低到高顺序:bool -> int -> float ->complex

True 默认转化是1

False 默认转化是0

(1) bool + int

res = True + 89
print(res)

(2) bool + float

res = True + 55.78
print(res)

(3) bool + complex

res = False + 2-4j
print(res)

(4) int + float

res = 31 + 4.1
print(res)

(5) int + complex

res = 17 + 4-7j
print(res)

(6) float + complex

res = 8.12 + 3+5j
print(res)

[root@node10 python]# python3 test.p

90
56.78
(2-4j)
35.1
(21-7j)
(11.12+5j)

二 强制类型转换

Number => (int float  bool complex)

2.1 把数据强制转换成整型 int

(整型  浮点型 布尔类型  纯数字字符串)

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = int(var2)

True 强转整型是1 False 强转整型是0

res = int(var3)
print(res,type(res))
res = int(var3_1)
print(res)
res = int(var5)
print(res,type(res))

[root@node10 python]# python3 test.py

1 <class ‘int’>
0
123321 <class ‘int’>

字符型字符串不能转化

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = int(var6)
print(res,type(res))

[root@node10 python]# python3 test.py

Traceback (most recent call last):
File “test.py”, line 9, in
res = int(var6)
ValueError: invalid literal for int() with base 10: ‘你好123’

2.2  float   (整型   浮点型 布尔类型  纯数字字符串)

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = float(var1)
print(res)
res = float(var3) # 加上.0 成为小数
print(res)
res = float(var3_1) # 0.0
print(res)
res = float(var5) #123321.0
print(res)

[root@node10 python]# python3 test.py

13.0
1.0
0.0
123321.0

[root@node10 python]# python3 test.py

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = float(var4) #can’t convert complex to float
print(res)

[root@node10 python]# python3 test.py

Traceback (most recent call last):
File “test.py”, line 9, in
res = float(var4) #can’t convert complex to float
TypeError: can’t convert complex to float

complex  (整型   浮点型 布尔类型  纯数字字符串  复数)

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = complex(var1) # 13 + 0j
print(res)
res = complex(var2) #(99.99+0j)
print(res)
res = complex(var3) #(1+0j)
print(res)
res = complex(var3_1) #0j
print(res)
res = complex(var5) #(123321+0j)
print(res)

[root@node10 python]# python3 test.py

(13+0j)
(99.99+0j)
(1+0j)
0j
(123321+0j)

2.3 bool类型

( 容器类型数据  /  Number类型数据 都可以,要么True要么False)

布尔类型为假的十种情况: 0,0.0,False,0j,“”,[],(),set(),{},None None 是系统的一个关键字 表示空的,什么也没有,一般做初始值

var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = “123321”
var6 = “你好123”

res = bool(var6)
print(res,type(res))
res = bool(var4)
print(res,type(res))
res = bool([1,2,3])
print(“<!!!>”)
print(res)
res = None
print(res,type(res))

[root@node10 python]# python3 test.py

True <class ‘bool’>
True <class ‘bool’>
<!!!>
True
None <class ‘NoneType’>

三 容器类型数据的强制类型转换

(str list tuple set dict)

3.1  str 强转成字符串类型

( 容器类型数据  /  Number类型数据 都可以 )

字符串强转规律: 就是单纯的在原数据的两侧加上引号

var1 = “快乐每一天”
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {“美丽”,“店铺名个人”}
var5 = {“a”:1,“b”:2,“c”:3}
var6 = 123

res = str(var2)
print(repr(res),type(res))
res = str(var3)
print(repr(res),type(res))
res = str(var5)
print(repr(res),type(res))
res = str(var6)

print(res,type(res))

repr 以字符串形式原型化输出数据 (想看到引号用repr转化)

print(repr(res),type(res))

[root@node10 python]# python3 test.py

‘[1, 2, 3]’ <class ‘str’>
‘(4, 5, 6)’ <class ‘str’>
“{‘a’: 1, ‘b’: 2, ‘c’: 3}” <class ‘str’>
‘123’ <class ‘str’>

3.2 list 列表

list 列表强转规律:

如果是字符串:把字符串中的每一个字符当成新的元素放到列表中,如果是其他数据:就是单纯的把原标识符换成[]

var1 = “快乐每一天”
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {“美丽”,“店铺名个人”}
var5 = {“a”:1,“b”:2,“c”:3}
var6 = 123

res = list(var1) #[‘快’, ‘乐’, ‘每’, ‘一’, ‘天’]
print(res)
res = list(var3)
print(res)
res = list(var4)
print(res)
res = list(var5) #[‘a’, ‘b’, ‘c’] 强转字典时,保留键,舍去值

res = list(var6) # error

print(res)

[root@node10 python]# python3 test.py

[‘快’, ‘乐’, ‘每’, ‘一’, ‘天’]
[4, 5, 6]
[‘店铺名个人’, ‘美丽’]
[‘a’, ‘b’, ‘c’]

3.3 tuple 元组

tuple 元组强转规律

如果是字符串:把字符串中的每一个字符当成新的元素放到元组中

如果是其他数据:就是单纯的把原标识符换成() 变成元组即可

var1 = “快乐每一天”
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {“美丽”,“店铺名个人”}
var5 = {“a”:1,“b”:2,“c”:3}
var6 = 123

res = tuple(var1) #(‘快’, ‘乐’, ‘每’, ‘一’, ‘天’)
print(res)
res = tuple(var2)
print(res)
res = tuple(var5) #(‘a’, ‘b’, ‘c’) #强转字典时,保留键,舍去值
print(res)

[root@node10 python]# python3 test.py

(‘快’, ‘乐’, ‘每’, ‘一’, ‘天’)
(1, 2, 3)
(‘a’, ‘b’, ‘c’)

3.4 set 集合

set 集合强转规律

  1. 如果是字符串:把字符串中的每一个字符当成新的元素放到集合中
  2. 如果是其他数据:就是单纯的把原标识符换成{} 变成集合即可​​

var1 = “快乐每一天”
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {“美丽”,“店铺名个人”}
var5 = {“a”:1,“b”:2,“c”:3}
var6 = 123

res = set(var1) #因为无序,字符串被打散
print(res)
res = set(var2) # {1,2,3}
print(res)
res = set(var5) #强转字典时,保留键,舍去值,键值顺序被打乱
print(res)​​​​

[root@node10 python]# python3 test.py

{‘快’, ‘每’, ‘一’, ‘乐’, ‘天’}
{1, 2, 3}
{‘c’, ‘a’, ‘b’}

过滤列表重复数据

listvar = [1,2,3,4,5,5,6,7,6]
container = set(listvar)
print(container)
container = list(container)
print(container,type(container))

[root@node10 python]# python3 test.py

{1, 2, 3, 4, 5, 6, 7}
[1, 2, 3, 4, 5, 6, 7] <class ‘list’>

3.5 二级容器

外面是一个容器类型的数据,里面的元素还是一个容器类型数据

listvar = [1,2,3,(4,5,6)] # 二级容器
print(listvar)

[root@node10 python]# python3 test.py

[1, 2, 3, (4, 5, 6)]

二级元祖

tup = (3,5,(7,8,9))
print(tup)

[root@node10 python]# python3 test.py

(3, 5, (7, 8, 9))

二级集合  (只能存放元组)

setvar = {1,2,3,(11,22,33)}
print(setvar)

[root@node10 python]# python3 test.py

{1, 2, 3, (11, 22, 33)}

二级字典

dictvar = {‘a’:{‘c’:333},‘b’:2}

取出333

print(dictvar[‘a’][‘c’])

[root@node10 python]# python3 test.py

333

四级容器

container = [1,2,3,(4,5,6,{“a”:1,“b”:[7,8,9]}),90]

取出9

res = container[-2][-1][“b”][-1]
print(res)

[root@node10 python]# python3 test.py

19

等长的二级容器

(1) 里面每个元素都是容器类型数据
(2) 每个容器类型数据的元素个数都相同

container = [(1,2,3),[4,5,6]]

3.6 字典的强制类型转换

外面是列表,里面是列表或元组或字符串

listvar = [[“a”,1],(“b”,2),“c123”] # 字符串慎用 如果值是多个,有局限性
listvar = [[“a”,1],(“b”,2)] # 推荐 ***
res = dict(listvar)
print(res)

[root@node10 python]# python3 test.py

{‘a’: 1, ‘b’: 2}

外面是元组,里面是列表元组或字符串

tuplevar = ([“c”,11],(“d”,23)) # 推荐 ***
res = dict(tuplevar)
print(res)

[root@node10 python]# python3 test.py

{‘c’: 11, ‘d’: 23}

例外:如果往列表或者元组容器放集合,语法上不报错,但情况出乎意料,达不到想要效果

container = dict([{“a”,1},{“b”,2}]) # 不推荐使用
print(container)

[root@node10 python]# python3 test.py

{‘a’: 1, ‘b’: 2}

外面是集合,里面是元组或字符串

setvar = {(‘a’,1),(‘b’,2),“c3”} # 必须放入不可变数据,即可哈希
res = dict(setvar)
print(res)

[root@node10 python]# python3 test.py

{‘b’: 2, ‘a’: 1, ‘c’: ‘3’}

int() float() bool() complex()
str() list() tuple() set() dict()
这些函数在进行强转时,都默认转化成当前的数据类型
用这样的方式也可以初始化一个变量

res = int()
res = list()
print(res)

[root@node10 python]# python3 test.py

【第九小节:Python 内置函数]

分类

按参数和返回值分类

无参数,无返回值
无参数,有返回值
有参数,无返回值
有参数,有返回值

按来源分类

内置函数
自定义函数
标准库函数
第三方库函数

内置函数

数学运算(7个)
类型转换(24个)
序列操作(8个)
对象操作(7个)
反射操作(8个)
变量操作(2个)
交互操作(2个)
文件操作(1个)
编译执行(4个)
装饰器(3个)

函数分类返回值
abs()数学运算返回数字的绝对值,如abs(-10) 返回 10
all()序列操作接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False
any()序列操作接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False
ascii()对象操作调用对象的__repr__()方法,获得该方法的返回值
bin()类型转换将十进制数分别转换为2进制
bool()类型转换测试一个对象是True还是False
bytearray()类型转换将一个字符串转换成字节类型
bytes()类型转换将字符类型/数值类型等转换为字符串类型
callable()反射操作判断对象是否可以被调用,能被调用的对象就是一个callables对象,比如函数和带有__call__()的实例
chr()类型转换查看十进制数对应的ASCII字符
classmethod()装饰器用来指定一个方法为类的方法,由类直接调用执行,只有一个cls参数,执行雷的方法时,自动将调用该方法的类赋值给cls.没有此参数指定的类的方法为实例方法
compile()编译执行将一个字符串编译为字节代码
complex()类型转换用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数
delattr()反射操作删除对象的属性
dict()类型转换创建数据字典
dir()对象操作不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表
divmod()数学运算分别取商和余数
enumerate()类型转换返回一个可以枚举的对象,该对象的next()方法将返回一个元组
eval()编译执行将字符串str当成有效的表达式来求值并返回计算结果
exec()编译执行执行字符串或complie方法编译过的字符串,没有返回值
filter()序列操作过滤器,构造一个序列,等价于[ item for item in iterables if function(item)],在函数中设定过滤条件,逐一循环迭代器中的元素,将返回值为True时的元素留下,形成一个filter类型数据
float()类型转换讲一个字符串或整数转换为浮点数
format()对象操作格式化输出字符串,format(value, format_spec)实质上是调用了value的__format__(format_spec)方法
frozenset()类型转换创建一个不可修改的集合
getattr()反射操作获取对象的属性
globals()变量操作返回一个描述当前全局变量的字典
hasattr()反射操作用于判断对象是否包含对应的属性
hash()对象操作用于获取一个对象(字符串或者数值等)的哈希值
help()对象操作返回对象的帮助文档
hex()类型转换将十进制数分别转换为16进制
id()对象操作返回对象的内存地址
input()交互操作获取用户输入内容
int()类型转换将一个字符串或数值转换为一个普通整数
isinstance()反射操作检查对象是否是类的对象,返回True或False
issubclass()反射操作检查一个类是否是另一个类的子类。返回True或False
iter()类型转换用来生成迭代器
len()对象操作返回对象长度,参数可以是序列类型(字符串,元组或列表)或映射类型(如字典)
list()类型转换列表构造函数
locals()变量操作打印当前可用的局部变量的字典
map()序列操作根据提供的函数对指定序列做映射
max()数学运算返回给定元素里最大值
memoryview()类型转换返回给定参数的内存查看对象
min()数学运算返回给定元素里最小值
next()序列操作返回一个可迭代数据结构(如列表)中的下一项
object()类型转换不接受任何参数,返回一个无特征对象,该对象是所有类的基础
oct()类型转换将十进制数分别转换为8进制
open()文件操作打开文件
ord()类型转换查看某个ASCII对应的十进制数
pow()数学运算幂函数
print()交互操作输出函数
property()装饰器在新式类中返回属性值
range()类型转换根据需要生成一个指定范围的数字,可以提供你需要的控制来迭代指定的次数
repr()编译执行将任意值转换为字符串,供计时器读取的形式
reversed()序列操作反转,逆序对象
round()数学运算四舍五入
set()类型转换创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
setattr()反射操作函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
slice()类型转换实现切片对象,主要用在切片操作函数里的参数传递
sorted()序列操作对所有可迭代的对象进行排序操作
staticmethod()装饰器返回函数的静态方法
str()类型转换返回一个对象的string格式
sum()数学运算求和
super()类型转换调用父类的方法
tuple()类型转换元组构造函数
type()对象操作显示对象所属的类型
vars()对象操作返回对象object的属性和属性值的字典对象
zip()序列操作将对象逐一配对
__import__()反射操作用于动态加载类和函数

【第十小节:python运算符】

什么是运算符

举个简单的例子:

4 + 5 = 9

例子中,4 和 5 被称为操作数+ 称为运算符


Python 语言支持以下类型的运算符:​​​

1、算术运算符

以下假设变量a为10,变量b为21:

运算符描述实例
+加 - 两个对象相加a + b 输出结果 31
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -11
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 210
/除 - x 除以 yb / a 输出结果 2.1
%取模 - 返回除法的余数b % a 输出结果 1
**幂 - 返回x的y次幂a**b 为10的21次方
//取整除 - 向下取接近商的整数>>> 9//2 4 >>> -9//2 -5

以下实例演示了Python所有算术运算符的操作:

实例(Python 3.0+)

#!/usr/bin/python3

a = 21
b = 10
c = 0

c = a + b
print (“1 - c 的值为:”, c)

c = a - b
print (“2 - c 的值为:”, c)

c = a * b
print (“3 - c 的值为:”, c)

c = a / b
print (“4 - c 的值为:”, c)

c = a % b
print (“5 - c 的值为:”, c)

修改变量 a 、b 、c

a = 2
b = 3
c = a**b
print (“6 - c 的值为:”, c)

a = 10
b = 5
c = a//b
print (“7 - c 的值为:”, c)

以上实例输出结果:

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2


结果总是隐式转换为复杂类型

正负

+x
521
-x
-521

加法,可结合赋值运算+=

x + 0
521

减法,可结合赋值运算-=

x - 21
500

乘法,可结合赋值运算*=

z * 100
521.0

除法,可结合赋值运算/=或//=

“”"
兼容特性: from future import division
“”"

Python2中对于包含小数使用真除法(保留小数部分,最终为小数)

x / 100.
5.21

Python3中对于包含小数使用真除法(保留小数部分,最终为小数)

x / 100.
5.21

Python2中对于全整数使用传统除法(保留整数部分,最终为整数)

x / 100
5

Python3中对于全整数使用真除法(保留小数部分,最终为小数)

x / 100
5.21

Python2中对于包含小数使用地板除(保留整数部分,最终为小数)

Python3中对于包含小数使用地板除(保留整数部分,最终为小数)

x // 100.
5.0

Python2中对于全整数使用地板除(保留整数部分,最终为整数)

Python3中对于全整数使用地板除(保留整数部分,最终为整数)

x // 100
5

取模,可结合赋值运算%=

x % 2
1

乘方,可结合赋值运算**=

z * 10 ** 2
521.0

5 + 4 # 加法
9
4.3 - 2 # 减法
2.3
3 * 7 # 乘法
21
2 / 4 # 除法,得到一个浮点数
0.5
2 // 4 # 除法,得到一个整数
0
17 % 3 # 取余
2
2 ** 5 # 乘方
32

2 & (2 - 1)
0

8 & (8 - 1)
0

16 & (16 - 1)
0


2、比较运算符

以下假设变量a为10,变量b为20:

运算符描述实例
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 True。
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。(a < b) 返回 True。
>=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False。
<=小于等于 - 返回x是否小于等于y。(a <= b) 返回 True。

以下实例演示了Python所有比较运算符的操作:


#!/usr/bin/python3

a = 21
b = 10
c = 0

if ( a == b ):
print (“1 - a 等于 b”)
else:
print (“1 - a 不等于 b”)

if ( a != b ):
print (“2 - a 不等于 b”)
else:
print (“2 - a 等于 b”)

if ( a < b ):
print (“3 - a 小于 b”)
else:
print (“3 - a 大于等于 b”)

if ( a > b ):
print (“4 - a 大于 b”)
else:
print (“4 - a 小于等于 b”)

修改变量 a 和 b 的值

a = 5;
b = 20;
if ( a <= b ):
print (“5 - a 小于等于 b”)
else:
print (“5 - a 大于 b”)

if ( b >= a ):
print (“6 - b 大于等于 a”)
else:
print (“6 - b 小于 a”)

以上实例输出结果:

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a


值比较

小于

y < x
True

小于等于

x <= x
True

大于

x > y
True

大于等于

x >= y
True

等于

x == x
True

不等于

for Python2

x != y
True
x <> y
True

for Python3

x != y
True

地址比较

id(x), id(521)
(140428868352096, 140428868352072)
x is 521
False


3、赋值运算符

向内存申请一空闲内存单元存储数字然后将变量名指向此内存单元,至此可通过变量名操作此内存单元数据


以下假设变量a为10,变量b为20:

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a
:=海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符在这个示例中,赋值表达式可以避免调用 len() 两次:if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")

以下实例演示了Python所有赋值运算符的操作:

实例(Python 3.0+)

#!/usr/bin/python3

a = 21
b = 10
c = 0

c = a + b
print (“1 - c 的值为:”, c)

c += a
print (“2 - c 的值为:”, c)

c *= a
print (“3 - c 的值为:”, c)

c /= a
print (“4 - c 的值为:”, c)

c = 2
c %= a
print (“5 - c 的值为:”, c)

c **= a
print (“6 - c 的值为:”, c)

c //= a
print (“7 - c 的值为:”, c)

以上实例输出结果:

1 - c 的值为: 31
2 - c 的值为: 52
3 - c 的值为: 1092
4 - c 的值为: 52.0
5 - c 的值为: 2
6 - c 的值为: 2097152
7 - c 的值为: 99864

:point_right:混合操作符优先级问题可通过括号()提升优先级解决

:point_right:混合类型的转换以复杂度为基准,会自动转换至复杂度最高的类型

多个变量赋值

Python允许你同时为多个变量赋值。例如:

a = b = c = 1

以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。

您也可以为多个对象指定多个变量。例如:

a, b, c = 1, 2, “runoob”

以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 “runoob” 分配给变量 c。


4、位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

a = 0011 1100
b = 0000 1101


a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

以下实例演示了Python所有位运算符的操作:

实例(Python 3.0+)


按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下表中变量 a 为 60,b 为 13二进制格式如下:

#!/usr/bin/python3

a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0

c = a & b; # 12 = 0000 1100
print (“1 - c 的值为:”, c)

c = a | b; # 61 = 0011 1101
print (“2 - c 的值为:”, c)

c = a ^ b; # 49 = 0011 0001
print (“3 - c 的值为:”, c)

c = ~a; # -61 = 1100 0011
print (“4 - c 的值为:”, c)

c = a << 2; # 240 = 1111 0000
print (“5 - c 的值为:”, c)

c = a >> 2; # 15 = 0000 1111
print (“6 - c 的值为:”, c)

bin(x)
‘0b1000001001’

左移,可结合赋值运算<<=

“”"
规则: 左
“”"

bin(x << 2)
‘0b100000100100’

右移,可结合赋值运算>>=

bin(x >> 2)
‘0b10000010’

位与,可结合赋值运算&=

“”"
规则: 都为1为1,否则为0
100000100100
000010000010

000000000000
“”"

0b100000100100 & 0b10000010
0

位或,可结合赋值运算|=

“”"
规则: 存在1为1,否则为0
100000100100
000010000010

100010100110
“”"

0b100000100100 | 0b10000010
2214

异或,可结合赋值运算^=

“”"
规则: 不同为1,相同为0
100000100100
000010000010

100010100110
“”"

0b100000100100 ^ 0b10000010
2214

取反,可结合赋值运算~=

“”"
规则: 1变为0,0变为1
0000001000001001

1111110111110110 取反,此时最高位为1表示负数,负数的存储需要将其转换为补码

1000001000001001 反码,保持符号位不变,其它位置取反

1000001000001010 补码,在反码的基础上最低位+1

-522
“”"

~0b1000001001
-522

👉 位或运算等同于十进制加法,基于此值之上与操作数位与等同于求操作数,反之与操作数取反位与等同于求被操作数,通常被用于权限模型

In [44]: x = 521

In [45]: bin(x)
Out[45]: ‘0b1000001001’

In [46]: x << 2
Out[46]: 2084

In [48]: bin(2084)
Out[48]: ‘0b100000100100’

In [52]: x << 5
Out[52]: 16672

In [53]: bin(16672)
Out[53]: ‘0b100000100100000’

//
In [49]: x >> 2
Out[49]: 130

In [50]: bin(130)
Out[50]: ‘0b10000010’

In [51]: 2084 & 130 # 与操作
Out[51]: 0

bin(x)
‘0b1000001001’

左移,可结合赋值运算<<=

“”"
规则: 左
“”"

bin(x << 2)
‘0b100000100100’

右移,可结合赋值运算>>=

bin(x >> 2)
‘0b10000010’

位与,可结合赋值运算&=

“”"
规则: 都为1为1,否则为0
100000100100
000010000010

000000000000
“”"

0b100000100100 & 0b10000010
0

位或,可结合赋值运算|=

“”"
规则: 存在1为1,否则为0
100000100100
000010000010

100010100110
“”"

0b100000100100 | 0b10000010
2214

异或,可结合赋值运算^=

“”"
规则: 不同为1,相同为0
100000100100
000010000010

100010100110
“”"

0b100000100100 ^ 0b10000010
2214

取反,可结合赋值运算~=

“”"
规则: 1变为0,0变为1
0000001000001001

1111110111110110 取反,此时最高位为1表示负数,负数的存储需要将其转换为补码

1000001000001001 反码,保持符号位不变,其它位置取反

1000001000001010 补码,在反码的基础上最低位+1

-522
“”"

~0b1000001001
-522

👉 位或运算等同于十进制加法,基于此值之上与操作数位与等同于求操作数,反之与操作数取反位与等同于求被操作数,通常被用于权限模型


5、逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符逻辑表达式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

以上实例输出结果:

实例(Python 3.0+)

与, 都为真为真

x and y
52.1

或, 一个真即真

x or y
521

非,总是隐式转换为布尔对象

not x
False

以上实例输出结果:

1 - 变量 a 和 b 都为 true
2 - 变量 a 和 b 都为 true,或其中一个变量为 true
3 - 变量 a 和 b 有一个不为 true
4 - 变量 a 和 b 都为 true,或其中一个变量为 true
5 - 变量 a 和 b 都为 false,或其中一个变量为 false

与, 都为真为真

In [38]: x
Out[38]: 521

In [39]: y
Out[39]: 6

In [40]: x and y
Out[40]: 6

或, 一个真即真

In [41]: x or y
Out[41]: 521

非,总是隐式转换为布尔对象

not x
False

In [42]: x = 0

In [43]: not x
Out[43]: True


6、成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

以下实例演示了Python所有成员运算符的操作:


实例(Python 3.0+)

以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 不在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中


7、身份运算符

常用于比较两个对象是否指向同一个内存单元

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

注: id()") 函数用于获取对象内存地址。


为避免频繁分配释放内存,解释器预先将-5~256的小整数作为索引将值存入small_ints列表对应的内存单元

至此声明变量右侧值为小整数时会首先在small_ints列表中索引是否存在,如果存在则直接将变量名指向此地址

n1 = 1
n2 = 1
n1 is n2
True

n1 = 521
n2 = 521
n1 is n2
False

对于单行多个赋值的特殊情况,如果值相同会将变量名指向同一块儿内存单元

n1 = 521; n2 = 521; n3 = 521
n1 is n2 is n3
True


以下实例演示了Python所有身份运算符的操作:

实例(Python 3.0+)

以上实例输出结果:

1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True


运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,求余数和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^
<= < > >=比较运算符
== !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符

以下实例演示了Python所有运算符优先级的操作:

实例(Python 3.0+)

以上实例输出结果:

(a + b) * c / d 运算结果为: 90.0
((a + b) * c) / d 运算结果为: 90.0
(a + b) * (c / d) 运算结果为: 90.0
a + (b * c) / d 运算结果为: 50.0

and 拥有更高优先级:

实例

以上实例输出结果:

yes

注意:

Pyhton3 已不支持 <> 运算符,可以使用 != 代替,如果你一定要使用这种比较运算符,可以使用以下的方式:

from future import barry_as_FLUFL
1 <> 2
True

【第十一小节:python流程控制】

1、概念

控制事物的执行流程就是流程控制

2、执行流程的三种情况

顺序结构:自上而下运行

分支结构:在运行过程中根据条件的不同可能会执行不同的流程

循环结构:在运行过程中会有些代码需要反复执行

3、必知必会

1、条件都会转成布尔值,从而决定子代码是否执行

2、在python中,使用缩进来代表代码的从属关系(四个空格)

3、并不是所有的代码都可以拥有子代码

4、同属于某个代码的多行子代码,必须保持相同的缩进量

**小技巧:**在上一行代码的结尾如果是冒号,那么下一行代码比缩进

if语法

​​

1、单分支(单if)

#语法:

if 条件:

条件成立之后执行的代码块

#示例:
age = 18
if age < 20:
print(‘你很漂亮’)

2、双分支(if 和else一起使用)

#语法:

if 条件1:

条件1成立之后执行的代码块

else :

条件不成立后执行的代码块

#示例:
age = 29
if age < 20:
print(‘你很漂亮’)
else:
print(‘认错人了’)

3、多分支(if、elif以及else共同使用)

#语法:

if 条件1:

条件1成立之后执行的代码块

elif 条件2:

条件1不成立条件,2成立之后执行的代码块

else 条件3:

条件1和2都不成立,条件3成立之后执行的代码块

#示例:
age = 19
if age < 20:
print(‘你很漂亮’)
elif age <29:
print(‘你好啊’)
else:
print(‘不好意思认错人了’)

4、if嵌套

age_of_girl = 20
height = 171
weight = 99
is_pretty = True
success = False

if age_of_girl >= 20 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
if success:
print(‘表白成功,在一起’)
else:
print(‘下次再见’)
else:
print(‘阿姨好’)

小练习

jason管理员 tony安保人员 kevin财务 jack销售 其他普通员工

1.获取用户名

username = input(‘你的名字:’)

2.判断用户名身份

if username == ‘jason’:
print(‘管理员’)
elif username == ‘tony’:
print(‘安保’)
elif username == ‘kevin’:
print(‘财务’)
elif username == ‘jack’:
print(‘销售’)
else:
print(‘普通员工’)

while循环

​​

1、语法

while 条件:
条件成立之后执行的子代码块

2、基本用法示例

i = 1
while i <= 5:
print(i)
i += 1

3、while+break

break:结束本层循环

while True:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)

直接结束本层循环

break
else:
print(‘输入错误’)

4、全局标志位

tag = True
while tag:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)

直接结束本层循环

tag = False
else:
print(‘输入错误’)

5**、while嵌套**

while嵌套

while True:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)
while True:
cmd = input(‘请输入您的指令>>>:’)

判断用户是否想退出

if cmd == ‘q’:
break
print(‘正在执行您的指令:%s’ % cmd)
break
else:
print(‘输入错误’)

案例

猜年龄的游戏
普通要求
用户可以有三次猜错的机会 如果过程中猜对了直接退出
拔高要求
三次机会用完之后提示用户是否继续尝试 如果是则再给三次机会 如果否则直接结束

普通要求# 1.先编写猜年龄主体功能

定义一个真实的年龄

real_age = 18

3.定义一个计数器

count = 1

2.先加一个循环功能

while count < 4:

1.1 获取用户猜测的年龄

guess_age = input(‘请输入您猜测的年龄>>>:’)

1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑)

guess_age = int(guess_age)

1.3 猜测年龄

if guess_age > real_age:
print(‘猜大了’)

4.1 每次猜错都加一

count += 1
elif guess_age < real_age:
print(‘猜小了’)

4.1 每次猜错都加一

count += 1
else:
print(‘哎呀 你真棒 猜对了!!!’)

4.猜对了直接结束本层循环

break

优化

count += 1

拔高要求# 1.先编写猜年龄主体功能

定义一个真实的年龄

real_age = 18

3.定义一个计数器

count = 1

2.先加一个循环功能

while True:

5.判断当前用户是第几次尝试

if count == 4:
choice = input(‘您已经尝试了三次 是否继续(y/n)>>>:’)

5.1 判断用户输入的是y还是n

if choice == ‘y’:

重置count的次数

count = 1
else:
print(‘再接再厉’)
break

1.1 获取用户猜测的年龄

guess_age = input(‘请输入您猜测的年龄>>>:’)

1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑)

guess_age = int(guess_age)

1.3 猜测年龄

if guess_age > real_age:
print(‘猜大了’)

4.1 每次猜错都加一

count += 1
elif guess_age < real_age:
print(‘猜小了’)

4.1 每次猜错都加一

count += 1
else:
print(‘哎呀 你真棒 猜对了!!!’)

4.猜对了直接结束本层循环

break

优化

count += 1

6、while+continue

continue表示结束本次循环,直接进入下一次循环

使用while循环打印出0-10但是不打印4

1.定义一个起始变量

count = 0

2.循环

while count < 11:

5.判断 如果count为4则不打印

if count == 4:
count += 1

跳过本次循环 开始下一次循环

continue

3.打印变量的值

print(count)

4.变量值自增1

count += 1

continue会让循环体代码直接回到条件判断处重新判断

7、while+else

count = 0
while count < 5:
print(count)
count += 1
else:
print(‘呵呵’) # 会执行else子代码

count = 0
while count < 5:
if count == 3:
break
print(count)
count += 1
else:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
nt(‘销售’)
else:
print(‘普通员工’)

while循环

​​

1、语法

while 条件:
条件成立之后执行的子代码块

2、基本用法示例

i = 1
while i <= 5:
print(i)
i += 1

3、while+break

break:结束本层循环

while True:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)

直接结束本层循环

break
else:
print(‘输入错误’)

4、全局标志位

tag = True
while tag:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)

直接结束本层循环

tag = False
else:
print(‘输入错误’)

5**、while嵌套**

while嵌套

while True:

1.获取用户输入的用户名和密码

username = input(‘username>>>:’)
password = input(‘password>>>:’)

2.判断用户名和密码是否正确

if username == ‘小明’ and password == ‘123’:
print(‘输入正确’)
while True:
cmd = input(‘请输入您的指令>>>:’)

判断用户是否想退出

if cmd == ‘q’:
break
print(‘正在执行您的指令:%s’ % cmd)
break
else:
print(‘输入错误’)

案例

猜年龄的游戏
普通要求
用户可以有三次猜错的机会 如果过程中猜对了直接退出
拔高要求
三次机会用完之后提示用户是否继续尝试 如果是则再给三次机会 如果否则直接结束

普通要求# 1.先编写猜年龄主体功能

定义一个真实的年龄

real_age = 18

3.定义一个计数器

count = 1

2.先加一个循环功能

while count < 4:

1.1 获取用户猜测的年龄

guess_age = input(‘请输入您猜测的年龄>>>:’)

1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑)

guess_age = int(guess_age)

1.3 猜测年龄

if guess_age > real_age:
print(‘猜大了’)

4.1 每次猜错都加一

count += 1
elif guess_age < real_age:
print(‘猜小了’)

4.1 每次猜错都加一

count += 1
else:
print(‘哎呀 你真棒 猜对了!!!’)

4.猜对了直接结束本层循环

break

优化

count += 1

拔高要求# 1.先编写猜年龄主体功能

定义一个真实的年龄

real_age = 18

3.定义一个计数器

count = 1

2.先加一个循环功能

while True:

5.判断当前用户是第几次尝试

if count == 4:
choice = input(‘您已经尝试了三次 是否继续(y/n)>>>:’)

5.1 判断用户输入的是y还是n

if choice == ‘y’:

重置count的次数

count = 1
else:
print(‘再接再厉’)
break

1.1 获取用户猜测的年龄

guess_age = input(‘请输入您猜测的年龄>>>:’)

1.2 简单粗略的将字符串转换成数字(可能会报错 暂时不要考虑)

guess_age = int(guess_age)

1.3 猜测年龄

if guess_age > real_age:
print(‘猜大了’)

4.1 每次猜错都加一

count += 1
elif guess_age < real_age:
print(‘猜小了’)

4.1 每次猜错都加一

count += 1
else:
print(‘哎呀 你真棒 猜对了!!!’)

4.猜对了直接结束本层循环

break

优化

count += 1

6、while+continue

continue表示结束本次循环,直接进入下一次循环

使用while循环打印出0-10但是不打印4

1.定义一个起始变量

count = 0

2.循环

while count < 11:

5.判断 如果count为4则不打印

if count == 4:
count += 1

跳过本次循环 开始下一次循环

continue

3.打印变量的值

print(count)

4.变量值自增1

count += 1

continue会让循环体代码直接回到条件判断处重新判断

7、while+else

count = 0
while count < 5:
print(count)
count += 1
else:
print(‘呵呵’) # 会执行else子代码

count = 0
while count < 5:
if count == 3:
break
print(count)
count += 1
else:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-NHVE2nqd-1713445986936)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值