Python极简入门:数据类型、条件语句、循环语句、异常处理

机器学习算法与Python实战

共 3990字,需浏览 8分钟

 · 2020-09-11

↑↑↑点击上方蓝字,回复资料,10个G的惊喜


作者:晓明呀  
https://blog.csdn.net/weixin_37777526/article/details/108427112

一、变量、运算符与数据类型

1. 注释

  1. 在 Python 中,# 表示注释,作用于整行。
  2. ''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释(多行注释)。

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整型-876, 10
float浮点型3.149, 11.11
bool布尔型True, False

通过 print() 可看出 a 的值,以及类 (class) 是int

a = 1031print(a, type(a))# 1031 

type可以帮助我们去获取到它的类型,再通过print()打印出来。

  1. type() 不会认为子类是一种父类类型,不考虑继承关系。
  2. isinstance()会认为子类是一种父类类型,考虑继承关系
  3. 如果要判断两个类型是否相同使用 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 条件表达式可以通过布尔操作符 andornot 实现多重条件判断。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("哼,猜对也没有奖励!") break else: print("小了,小了")print("游戏结束,不玩儿啦!")

continue终止本轮循环并开始下一轮循环。

for i in range(10):    if i % 2 != 0:        print(i)        continue    i += 2    print(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缩进错误导致的异常TabErrorTab和空格混用
SystemError一般的解释器系统异常TypeError不同类型间的无效操作
ValueError传入无效的参数UnicodeErrorUnicode相关的异常
UnicodeDecodeErrorUnicode解码时的异常UnicodeEncodeErrorUnicode编码错误导致的异常
UnicodeTranslateErrorUnicode转换错误导致的异常

2.Python标准警告总结

标识符内容标识符内容
Warning警告的基类DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告UserWarning用户代码生成的警告
PendingDeprecationWarning关于特性将会被废弃的警告RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑语法的警告ImportWarning用于在导入模块过程中触发的警告
UnicodeWarning与Unicode相关的警告BytesWarning与字节或字节码相关的警告
ResourceWarning与资源使用相关的警告

扫描二维码添加好友↓

推荐阅读

(点击标题可跳转阅读)

【AI行业鄙视链大曝光】

震惊!深度学习岗位已崩溃!

Numpy核心语法和代码整理汇总!

数学系的概率论和我们的不太一样。。。

【数学史】矩阵和线性代数原来是这么来的

老铁,三连支持一下,好吗?↓↓↓

浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报