Python极简入门:数据类型、条件语句、循环语句、异常处理
↑↑↑点击上方蓝字,回复资料,10个G的惊喜
一、变量、运算符与数据类型
1. 注释
在 Python 中,# 表示注释,作用于整行。 ''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释(多行注释)。
2. 运算符
1. 位运算符
| 操作符 | 名称 | 示例 |
|---|---|---|
| ~ | 按位取反 | ~4 |
| & | 按位与 | 4 & 5 |
| ` | 按位或 | |
| ^ | 按位异或 | 4 ^ 5 |
| << | 左移 | 4 << 2 |
| >> | 右移 | 4 >> 2 |
运算符的优先级
一元运算符优于二元运算符。例如 3 ** -2等价于3 ** (-2)。先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于(1 << (3 + 2)) & 7。逻辑运算最后结合。例如 3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。
2. 数据类型与转换
| 类型 | 名称 | 示例 |
|---|---|---|
| int | 整型 | |
| float | 浮点型 | |
| bool | 布尔型 |
通过 print() 可看出 a 的值,以及类 (class) 是int
a = 1031print(a, type(a))# 1031
type可以帮助我们去获取到它的类型,再通过print()打印出来。
type()不会认为子类是一种父类类型,不考虑继承关系。isinstance()会认为子类是一种父类类型,考虑继承关系如果要判断两个类型是否相同使用 isinstance()。
Python 里面有很多用途广泛的包 (package),用什么你就引进(import)什么。包也是对象,可以用dir(decimal)来看其属性和方法
【例子】使 1/3 保留 5 位,用getcontext().prec 来调整精度。
import decimalfrom decimal import Decimaldecimal.getcontext().prec = 5c = Decimal(1) / Decimal(3)print(c)
布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔型变量用在数字运算中,用 1 和 0 代表 True 和 False
类型转换
转换为整型 int(x, base=10)转换为字符串 str(object='')转换为浮点型 float(x)
3. print() 函数
将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按 str()方式进行转换为字符串输出;关键字参数 sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;关键字参数 end是输出结束时的字符,默认是换行符\n;关键字参数 file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;关键字参数 flush是立即把内容输出到流文件,不作缓存。
没有参数时,每次输出后都会换行。
shoplist = ['apple', 'mango', 'carrot', 'banana']print("This is printed without 'end'and 'sep'.")for item in shoplist:print(item)# This is printed without 'end'and 'sep'.# apple# mango# carrot# banana
item值与'another string'两个值之间用sep设置的参数&分割。由于end参数没有设置,因此默认是输出解释后换行,即end参数的默认值为\n。
shoplist = ['apple', 'mango', 'carrot', 'banana']print("This is printed with 'sep='&''.")for item in shoplist:print(item, 'another string', sep='&')# This is printed with 'sep='&''.# apple&another string# mango&another string# carrot&another string# banana&another string
二、条件语句
1. if 语句
if 语句的 expr_true_suite代码块只有当条件表达式expression结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句,如果为假则不输出。单个 if 语句中的 expression条件表达式可以通过布尔操作符and,or和not实现多重条件判断。if - else语句就是对if后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则执行else后的语句
temp = input("猜一猜小哥哥帅不帅?")guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。if guess == 帅:print("你太了解小姐姐的心思了!")print("哼,猜对也没有奖励!")else:print("猜错了,小姐姐现在心里想的是666!")print("游戏结束,不玩儿啦!")
if - elif - else 语句对if后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则继续对elif后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则直到执行else后的语句
temp = input('请输入成绩:')source = int(temp)if 100 >= source >= 90:print('A')elif 90 > source >= 80:print('B')elif 80 > source >= 60:print('C')elif 60 > source >= 0:print('D')else:print('输入错误!')
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
my_list = ['lsgogroup']my_list.pop(0)assert len(my_list) > 0# AssertionError
三、循环语句
1.while语句
while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句,代码块会一直循环执行,直到布尔表达式的值为布尔假。。
string = 'abcd'while string:print(string)string = string[1:]# abcd# bcd# cd# d
如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
count = 0while count < 5:print("%d is less than 5" % count)count = count + 1else:print("%d is not less than 5" % count)# 0 is less than 5# 1 is less than 5# 2 is less than 5# 3 is less than 5# 4 is less than 5# 5 is not less than 5
2.for 语句
for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。
member = ['张三', '李四', '刘德华', '刘六', '周润发']for each in member:print(each)# 张三# 李四# 刘德华# 刘六# 周润发
每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样。
for num in range(10, 20): # 迭代 10 到 20 之间的数字for i in range(2, num): # 根据因子迭代if num % i == 0: # 确定第一个因子j = num / i # 计算第二个因子print('%d 等于 %d * %d' % (num, i, j))break # 跳出当前循环else: # 循环的 else 部分print(num, '是一个质数')# 10 等于 2 * 5# 11 是一个质数# 12 等于 2 * 6# 13 是一个质数# 14 等于 2 * 7# 15 等于 3 * 5# 16 等于 2 * 8# 17 是一个质数# 18 等于 2 * 9# 19 是一个质数
range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。
for i in range(1, 10, 2):print(i)# 1# 3# 5# 7# 9
3.跳出循环语句
break语句可以跳出当前所在层的循环。
import randomsecret = random.randint(1, 10) #[1,10]之间的随机数while True:temp = input("猜一猜小姐姐想的是哪个数字?")guess = int(temp)if guess > secret:print("大了,大了")else:if guess == secret:print("你太了解小姐姐的心思了!")print("哼,猜对也没有奖励!")breakelse:print("小了,小了")print("游戏结束,不玩儿啦!")
continue终止本轮循环并开始下一轮循环。
for i in range(10):if i % 2 != 0:print(i)continuei += 2print(i)# 2# 1# 4# 3# 6# 5# 8# 7# 10# 9
四、异常处理
1. Python 标准异常总结
| 标识符 | 内容 | 标识符 | 内容 |
|---|---|---|---|
| BaseException |
| 所有异常的 基类 | Exception | 常规异常的基类 | |
| StandardError | 所有的内建标准异常的基类 | ArithmeticError | 所有数值计算异常的基类 |
| FloatingPointError | 浮点计算异常 | OverflowError | 数值运算超出最大限制 |
| ZeroDivisionError | 除数为零 | AssertionError | 断言语句(assert)失败 |
| AttributeError | 尝试访问未知的对象属性 | EOFError | 没有内建输入,到达EOF标记 |
| EnvironmentError | 操作系统异常的基类 | OError | 输入/输出操作失败 |
| OSError | 操作系统产生的异常(例如打开一个不存在的文件) | WindowsError | 系统调用失败 |
| ImportError | 导入模块失败的时候 | KeyboardInterrupt | 用户中断执行 |
| LookupError | 无效数据查询的基类 | IndexError | 索引超出序列的范围 |
| KeyError | 字典中查找一个不存在的关键字 | MemoryError | 内存溢出(可通过删除对象释放内存) |
| NameError | 尝试访问一个不存在的变量 | UnboundLocalError | 访问未初始化的本地变量 |
| ReferenceError | 弱引用试图访问已经垃圾回收了的对象 | RuntimeError | 一般的运行时异常 |
| NotImplementedError | 尚未实现的方法 | SyntaxError | 语法错误导致的异常 |
| IndentationError | 缩进错误导致的异常 | TabError | Tab和空格混用 |
| SystemError | 一般的解释器系统异常 | TypeError | 不同类型间的无效操作 |
| ValueError | 传入无效的参数 | UnicodeError | Unicode相关的异常 |
| UnicodeDecodeError | Unicode解码时的异常 | UnicodeEncodeError | Unicode编码错误导致的异常 |
| UnicodeTranslateError | Unicode转换错误导致的异常 |
2.Python标准警告总结
| 标识符 | 内容 | 标识符 | 内容 |
|---|---|---|---|
| Warning | 警告的基类 | DeprecationWarning | 关于被弃用的特征的警告 |
| FutureWarning | 关于构造将来语义会有改变的警告 | UserWarning | 用户代码生成的警告 |
| PendingDeprecationWarning | 关于特性将会被废弃的警告 | RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
| SyntaxWarning | 可疑语法的警告 | ImportWarning | 用于在导入模块过程中触发的警告 |
| UnicodeWarning | 与Unicode相关的警告 | BytesWarning | 与字节或字节码相关的警告 |
| ResourceWarning | 与资源使用相关的警告 |
↓扫描二维码添加好友↓ 推荐阅读
(点击标题可跳转阅读)
老铁,三连支持一下,好吗?↓↓↓
