【天池龙珠计划寒假训练营】python学习笔记(一):从变量到异常处理

本文主要是介绍【天池龙珠计划寒假训练营】python学习笔记(一):从变量到异常处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1.1注释

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

例1.1.1

# 写下你的答案
print("hello world")

1.2运算符

- 算数运算符

操作符名称示例
+1+1
-2-1
*3*4
/除以3/4
//整除(地板除)3//4
%取余3%4
**2**3

- 比较运算符

操作符名称示例
>大于2 > 1
>=大于等于2 >= 4
<小于1 < 2
<=小于等于5 <= 2
==等于3 == 4
!=不等于3 != 5

- 逻辑运算符

操作符名称示例
and(3 > 2) and (3 < 5)
or(1 > 3) or (9 < 2)
notnot (2 > 1)

- 位运算符

操作符名称示例
~按位取反~4
&按位与4 & 5
|按位或4|5
^按位异或4 ^ 5
<<左移4 << 2
>>右移4 >> 2

例1.2.1

print(bin(4))  # 0b100
print(bin(5))  # 0b101
print(bin(~4), ~4)  # -0b101 -5
print(bin(4 & 5), 4 & 5)  # 0b100 4
print(bin(4 | 5), 4 | 5)  # 0b101 5
print(bin(4 ^ 5), 4 ^ 5)  # 0b1 1
print(bin(4 << 2), 4 << 2)  # 0b10000 16
print(bin(4 >> 2), 4 >> 2)  # 0b1 1

在这里插入图片描述
问题1:按位取反?为什么~4=-5呢?

  • 二进制数
    按位取反是位运算符,而位运算符是应用在两个数的运算上,会对数字的二进制所有位数进行从低到高的运算。所以需要把十进制数转换成二进制数再进行运算。
  • 补码
    补码是属于计算机三种机械数的一种,机械数有原码、反码、补码。
    如果是正数,那么原码 = 反码 = 补码,正数的符号位为0(如 0 100,这里的0就是符号位,负数类似);
    如果是负数,那么反码就是把原码的每一位取反,也就是0变成1,1变成0;补码就是在反码的基础上,末位+1,负数的符号位为1。
  • 计算~4=-5
    第一步,把十进制数4转化成二进制数100;
    第二步,由于二进制数在内存中以补码的形式存储,所以将得到的二进制数转成补码,要成补码先要把原码转成反码(即0 100,正数原反补一样,第一个0就是符号位),然后反码得到补码(即0 100,正数原反补一样);
    第三步,终于进行按位取反啦!把第二步得到的补码进行按位取反(即1 011);
    第四步,把第三步的操作转为补码(因为敲重点:二进制数在内存中以补码的形式存储!!!,所以就需要把取反后的二进制数,转成补码),但是由于按位取反后变为负数,所以我们需要应用负数的原反补规则,先变成反码(即1 011),然后反码末位+1得到补码(即1 101);
    第五步,把得到的补码101转成十进制数就是5,然后符号位是1,故~4结果为-5)。
  • 快捷公式:~x = -(x+1)

(解决方法参考链接:https://www.cnblogs.com/jniantic/p/12189648.html)

问题2:位运算解释(详细示例转到“二、位运算”)

  • &:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
  • |:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1。
  • ^:按位异或运算符,当两对应的二进位相异时,结果为1。
  • ~:按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1 。
  • <<:左移动运算符,运算数的各二进位全部左移若干位,由<< 右边的数字指定了移动的位数,高位丢弃,低位补0。
  • >>:右移动运算符,把运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。

注:bin()函数
bin()函数用于将数字转换为二进制。如果将数字传递给该bin()函数,则它将返回该数字的二进制表示形式。
Python中的二进制数字以0b开头。该bin()函数的结果也以0b开头。

- 三元运算符
学会三元操作符的条件表达式,可以使用一条语句来完成以上的条件判断和赋值操作。

例1.2.2

x, y = 4, 5
if x < y:small = x
else:small = yprint(small)  # 4
x, y = 4, 5
small = x if x < y else y
print(small)  # 4

-其他运算符

操作符名称示例
in存在‘A’ in [‘A’, ‘B’, ‘C’]
not in不存在‘h’ not in [‘A’, ‘B’, ‘C’]
is“hello” is “hello”
not is不是“hello” is not “hello”

例1.2.3

打印判断:

letters = ['A', 'B', 'C']
if 'A' in letters:print('A' + ' exists')
if 'h' not in letters:print('h' + ' not exists')# A exists
# h not exists

比较两个变量均指向不可变类型:

a = "hello"
b = "hello"
print(a is b, a == b)  # True True
print(a is not b, a != b)  # False False

比较的两个变量均指向可变类型:

a = ["hello"]
b = ["hello"]
print(a is b, a == b)  # False True
print(a is not b, a != b)  # True False

在这里插入图片描述
注意:

  • is, is not 对比的是两个变量的内存地址
  • ==, != 对比的是两个变量的值
  • 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
  • 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。

-运算符的优先级

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

例1.2.4

print(-3 ** 2)  #= (-3)^2=-9
print(3 ** -2)  #=3^(-2)=0.1111111111111111
print(1 << 3 + 2 & 7)  # 0
print(-3 * 2 + 5 / -2 - 4)  # -12.5
print(3 < 4 and 4 < 5)  # True

1.3变量和赋值

  1. 在使用变量之前,需要对其先赋值。
  2. 变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
  3. Python 变量名是大小写敏感的,foo != Foo。

例1.3.1

x = "小白的程序人生"
print(x) # 小白的程序人生
x = "大白的程序人生"
print(x) # 大白的程序人生
first = 2
second = 3
third = first + second
print(third) # 5
x1 = "大白的程序人生"
x2 = "小白的程序人生"
x3 = x1 + x2
print(x3) # 大白的程序人生小白的程序人生

1.4数据类型与转换

类型名称示例
int整型-876, 10
float浮点型3.149, 11.11
bool布尔型True, False

- 整型 <class 'int'>

Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。

例1.4.1
找到一个整数的二进制表示,再返回其长度。

a = 1031
print(bin(a)) # 0b10000000111
print(a.bit_length()) # 11

- 浮点型 <class 'float'>

print(1, type(1))
# 1 <class 'int'>
print(1., type(1.))
# 1.0 <class 'float'>
a = 0.00000023
b = 2.3e-7
print(a) # 2.3e-07
print(b) # 2.3e-07

有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。

import decimal
from decimal import Decimal

Python 里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到
dir(decimal) 来看其属性和方法。比如 getcontext() 显示了 Decimal 对象的默认精度值是 28 位 ( prec=28 ),
展示如下:

a = decimal.getcontext()
print(a)
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=
[], traps=[InvalidOperation, DivisionByZero, Overflow])

那保留 4 位呢?用 getcontext().prec 来调整精度。

decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333

- 布尔型 <class 'bool'>
布尔 (boolean) 型变量只能取两个值, TrueFalse 。当把布尔变量用在数字运算中,用 1 和 0 代表 TrueFalse

print(True + True) # 2
print(True + False) # 1
print(True * False) # 0

除了直接给变量赋值 TrueFalse ,还可以用 bool(X) 来创建变量,其中 X 可以是

  1. 基本类型:整型、浮点型、布尔型
  2. 容器类型:字符、元组、列表、字典和集

bool 作用在基本类型变量: X 只要不是整型 0 、浮点型 0.0bool(X) 就是 True ,其余就是 False
bool 作用在容器类型变量: X 只要不是空的变量, bool(X) 就是 True ,其余就是 False
确定 bool(X) 的值是 True 还是 False ,就看 X 是不是空,空的话就是 False ,不空的话就是 True

  1. 对于数值变量, 0 , 0.0 都可认为是空的。
  2. 对于容器变量,里面没元素就是空的。

- 获取类型信息

  1. 获取类型信息 type(object)
print(type(1)) # <class 'int'>
print(type(5.2)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type('5.2')) # <class 'str'>

2.获取类型信息 isinstance(object, classinfo)

print(isinstance(1, int)) # True
print(isinstance(5.2, float)) # True
print(isinstance(True, bool)) # True
print(

这篇关于【天池龙珠计划寒假训练营】python学习笔记(一):从变量到异常处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_44692396/article/details/112978011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/661992

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: