Python每日一练 02

news2024/11/18 20:23:37

Python每日一练 02

文章目录

  • Python每日一练 02
    • 一、对象
    • 二、对象属性
    • 三、赋值

一、对象

Python中所有数字、序列、集合、映射、类、实例、异常、模块、类与类的实例、函数、方法、布尔值、空值等都被称为对象。

二、对象属性

每个对象都有3个基本属性:

类型(type)

身份标识(id)

值(value)

type(object) 函数可以返回对象 object 的数据类型,对象一旦创建其类型便不可再变。

id(object) 函数可返回表示对象object的身份标识,也就是系统为这个对象分配的内存的首地址编号,用一个整数表示。对象创建后,其身份标识 id 绝对不会改变。

value就是这个对象存储的值。

有些对象的值可以改变,称为可变数据类型,与之相对,值不可以改变的对象称为不可变数据类型。

print(type(500))  # 类型为:整型 <class 'int'>
print(id(500))    # 内存地址为:139798173271824,与机器有关,每次运行不同
<class 'int'>
139798173271824

程序先创建一个整数对象“500”,500 称为这个对象的值,该对象的数据类型为整型int,可用函数type(500)来获取。系统会为其分配一个内存区域,可用函数id(500)获取,返回值“2562179721328”为该对象在内存地址的起始编号。
在这里插入图片描述

每个对象除了这三个基本属性以外,在使用过程中,用户经常会通过加标签的方式给对象附加一个标识符,也称为名字(name),以方便在程序中通过这个名字引用该对象。这个名字与其他程序设计语言中的变量作用相似,所以 Python 中也经常称之为变量。Python中用赋值符号(=)给对象加标识符,也可以说是给对象增加名字或是没用传统称为给变量赋值。同一个对象可以命多个名字,不同对象命相同名字时,应用时访问最邻近命名的那个对象。

num = 500         # 名字为num
print(type(num))  # <class 'int'>
print(id(num))    # 2562179721328
print(num)        # 值为500
<class 'int'>
139798173272080
500

三、赋值

将一个标签名字绑定到一个对象上的操作,命名后可以用这个名字来引用或者说访问该对象,这个操作用赋值符号“=”完成。Python中的变量在使用前不需要声明,也不需要声明其类型。但每个变量在使用前都必须先有值才可以使用,也就是说变量首次出现必须是在赋值符号的左侧。只有当一个对象被赋值给一个变量后,该变量才会被创建。

x = 5             # 名字x 绑定到整数5上
print(x)
y = 'hello'       # 名字y 绑定到字符串'hello' 上
print(y)
z = [1, 2, 3, 4]  # 名字z 绑定到列表[1, 2, 3, 4]上
print(z)
x = (16 + (8 ** 2 - 4 * 6 * 2) ** 0.5) / (2 * 5)  # 名字x 绑定到表达式求值得到的浮点数对象上
print(x)
5
hello
[1, 2, 3, 4]
2.0

在同一个程序中对一个变量重复赋值,或者说重复使用同一个变量名时,起作用的是最近的语句。下面程序中先将浮点型对象“3.14”和整型对象“4”分别与变量名“pi”和“radius”绑定,此时计算面积时,参与运算的是“3.14”和“4”,得到的浮点型对象“50.24”与变量名“area”绑定。 当程序执行到 radius = 6 时,“radius”这个名字将先与对象“4”解绑,再重新绑定到对象“6”上。类似的操作,执行area = pi * (radius ** 2) 时,“area”也会与对象“50.24”解除绑定并重新绑定到对象“113.24”上。

pi = 3.14                  # 变量pi赋值为3.14
radius = 4                 # 变量radius赋值为4
area = pi * (radius ** 2)  # 计算圆面积
print(area)                # 输出面积值 50.24
radius = 6                 # 变量radius赋值为6,后面使用这个值
area = pi * (radius ** 2)  # 计算圆面积
print(area)                # 输出面积值 113.04
50.24
113.04

在这里插入图片描述

需要命名的对象可以是包含于圆括号、方括号、大括号或引号内的可迭代对象。如果赋值号左边是一个名字,则将名字直接绑定到右侧对象上。若左边名字多于一个时,名字数量必须与右侧的可迭代对象中的元素或字符数量相同,这些名字将按从左至右的顺序被绑定到对应元素或字符,这种操作称为同步赋值

x = 1, 2
print(x)        # (1, 2),名字 x 绑定到元组(1, 2)上,后面用x访问这个元组 
(1, 2)
x, y = 1, 2     # 左侧有2个名字,右侧对象中有2个元素1和2,数量相同
print(x, y)     # 1 2,要求右侧对象中元素数量与左侧变量数量相同
1 2
x, y = {1, 2}
print(x, y)     # 1 2,要求右侧对象中元素数量与左侧变量数量相同
1 2
x, y, z = 'abc'
print(x, y, z)  # a b c,要求右侧对象中字符数量与左侧变量数量相同
a b c

利用同步赋值方法可以实现两个变量指向对象的交换:

m, n = 5, 10  # m,n = (5,10),将5 赋值给m, 将10赋值给n
print(m, n)   # 输出 5 10
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10
m, n = n, m   # 交换变量 m 和 n 所指向的对象
print(m, n)   # 输出 10 5
print(f'm = {m}, n = {n}')   # 输出 m = 10, n = 5
5 10
m = 5, n = 10
10 5
m = 10, n = 5

从上面输出中可以看到,同步赋值可以方便的交换两个变量的值。用f-string格式输出语义更清晰明了,推荐使用。split()方法可根据指定分隔符将对象切分为列表,可将这个方法作用于input()函数上,将在一行内输入的多个数据切分为一个列表,被分隔符分开的多个数据作为列表的元素。参数缺省时,默认用空格切分对象,如果指定了分隔符,则用分隔符进行切分。

m,n = input().split()        # split()参数缺省时,可根据空格将输入切分为列表
# 例如输入 “100 200”,可被切分为[100,200],然后将列表中的元素分别赋值给m,n
print(m,n)                   # 输出 100,200
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10

100 200
100 200
m = 100, n = 200

split()可根据逗号(‘,’)若其他符号将输入切分为列表,用于切分的符号放到括号中作为参数。

m,n = input().split(',')     # split()可根据逗号(',')将输入切分为列表
# 例如输入 “100,200”,可被切分为[100,200],然后将列表中的元素分别赋值给m,n
print(m,n)                   # 输出 100,200
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10
100,200
100 200
m = 100, n = 200

例如:用hour, minute, second做变量名,在一行内输入一个包含小时、分钟和秒的时间,按测试用例格式输出(表示时间的数字根据自己的输入变化)。

# 补充你的代码
hour, minute, second = input().split(':')
print(f'现在是北京时间{hour}{minute}{second}秒')
23:07:58
现在是北京时间23时07分58秒

Python提供了“+=、-=、*=、/=、//=、%=、**%=”等增强赋值语句,在单个语句中将二元运算赋值语句合为一体,具体描述参见下表。

c = 100    # 将数字100命名为c
print(c)

c = c + 8  # 将 100 + 8 的运算结果命名为 c,c值为108
print(c)

c += 8  # 与c = c + 8相同,将 108 + 8 的运算结果命名为 c,c值为116
print(c)
100
108
116
符号描述实例解释
+=加法运算赋值符c += ac = c + a
-=减法运算赋值符c -= ac = c - a
*=乘法运算赋值符c *= ac = c * a
/=除法运算赋值符c /= ac = c / a
%=取模运算赋值符c %= ac = c % a
**=幂运算赋值符c **= ac = c ** a
//=整除运算赋值符c //= ac = c // a

Python 3.8 以后的版本增加了一个称为赋值表达式(也称海象运算符)的新特性,语法为:

name := expression

赋值表达式把一个表达式的值赋给一个标识符,返回表达式的值。例如,经常需要重复输入并进行处理,当输入回车时结束输入,实现代码如下:

# 下面代码作用是重复接受收入,输入非空时输出输入的字符串,输入为空时结束程序
while True:             # 构建无限循环
    user_name = input()  # 循环内重复输入用户名
    if not user_name:    # 若直接输入回车时,user_name为空字符串,值为False
        break            # 结束循环
    print(user_name)      # 输入非空字符串时输出
1
1
2
2

上述代码可用赋值表达式更简洁的实现(解释器版本高于3.8时才可用),代码如下:

# 下面代码作用是重复接受收入,输入非空时输出输入的字符串,输入为空时结束程序
while user_name := input():  # 输入回车时,user_name值为空字符串,表达式值为False,结束循环
    print(user_name)         # 输入不是回车时进入循环执行处理语句
1
1
2
2
0
0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink-源算子Source(获取数据源)的使用

5.1 整体介绍 获取执行环境读取数据源定义基于数据的转换操作定义计算结果的输出位置触发程序执行 5.2 创建集成环境 5.2.1 获取执行环境 批处理getExecutionEnvironment 提交命令行设置 bin/flink run -Dexecution.runtime-modeBATCH ...代码 StreamExecutionEnvironme…

pip Command Not Found – Mac 和 Linux 错误被解决

使用Python时&#xff0c;可能需要安装和使用某些软件包。有一个命令可用于’pip‘ 使用pip&#xff0c;您可以安装、升级和卸载各种Python包。在本文中&#xff0c;您将学习如何使用它&#xff0c;以及如何处理pip错误。 如何使用 pip Pip是一个可以在Linux或Mac命令行上使用…

HTTP(http+抓包Fiddler+协议格式+请求+响应)

目录 &#x1f984;1. 了解HTTP &#x1f984;2. 抓包 &#x1f984;3. http协议格式 &#x1f432;3.1 完整的HTTP请求格式 &#x1f432;3.2 完整的HTTP响应的格式 HTTP请求 &#x1f984;4. 认识URL &#x1f984;5. http中的"方法" &#x1f432;5.1…

智能与工程学院2022级计算机朱元华

智能与工程学院 《高级语言程序设计》 小组学习任务书 第 1 次 专业年级&#xff1a; 2022级计算机 指导教师&#xff1a; 朱元华 2022-2023学年 第 1 学期 一、任务 XXX信息管理系统的需求分析和功能设计 二、分组形式 学生自由组合&#xff0c;5-8人为一组&#xff0c;根据…

Tuxera NTFS2023Mac读写ntfs磁盘工具

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具&#xff0c;具有强大的磁盘管理和修复功能&#xff0c;它在Mac上完全读写NTFS格式硬盘&#xff0c;快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

【Spring】——6、按照条件向Spring容器中注册bean

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

静态时序分析简明教程(六)]时钟组与其他时钟特性

生成时钟的sdc约束方法一、写在前面1.1 快速导航链接二、时钟组2.1 引入时钟组2.2 set_clock_group2.2.1 -name2.2.2 -group clock_list2.2.3 -logically_exclusive|-physically_exclusive|-asynchronous2.2.4 -allow_path2.2.5 -comment三、其他时钟特性3.1 过渡时间3.2 偏移与…

【Linux】进程间通信——管道

目录 一、概念 二、管道函数 1.popen函数 2.pclose函数 3.文件函数 三、管道的操作 1.管道的分类 无名管道 有名管道 管道的特点 四、管道的实现 操作系统对进程之间相互保护 两个进程之间相互通信 前言&#xff1a; 进程间通信的方法/IPC机制都有哪些&#xff1a; …

求二进制中1的个数的三种方法

求二进制中的1的个数 文章目录第一种方法&#xff1a;模2除2第二种方法&#xff1a;利用操作符右移后与1第三种方法&#xff1a;该数与上比它小1的数&#xff08;最优的方法&#xff09;第一种方法&#xff1a;模2除2 首先明白如何得到一个数的十进制的每一位&#xff1f; 以1…

PHP代码审计入门-DVWA靶场CSRF篇

0x00 写在前面 从零学习php&#xff0c;最终目的实现代码审计入门&#xff0c;软件采用sublime text&#xff0c;环境使用phpstudy搭建&#xff0c;数据库是navicat&#xff0c;需要有基本的前端基础、简单的phpmysql后端基础、渗透知识和漏洞原理&#xff0c;文章跟随流沙前…

bizlog通用操作日志组件(使用篇)

引言 如上图所示&#xff0c;产品的新需求&#xff0c;需要将操作人在系统中具体编辑操作的变更内容记录下来。 按正常思路来说&#xff0c;无非就是将修改前后的对象字段逐个比较&#xff0c;再拼接为详细的操作描述记录到操作日志表中。如果是一个模块的需求&#xff0c;单独…

用HTML+CSS做一个学生抗疫感动专题网页设计作业网页

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

springboot如何修改thymeleaf中默认的页面路径及默认的后缀名呢?

转自: springboot如何修改thymeleaf中默认的页面路径及默认的后缀名呢? 下文讲述springboot修改thymefleaf修改页面默认路径及后缀名的方法分享&#xff0c;如下所示: 实现思路:只需在配置文件中修改相应的配置即可&#xff0c;如&#xff1a;application.yaml spring:thym…

MySQL单表查询操作详解,不做CRUD程序员

在我们对数据进行操作时&#xff0c;查询无疑是至关重要的&#xff0c;查询操作灵活多变&#xff0c;我们可以根据开发的需求&#xff0c;设计高效的查询操作&#xff0c;把数据库中存储的数据展示给用户。 文章目录前言1. 基础查询1.1 基础查询语法1.2 基础查询练习2. 条件查询…

大数据路线

一、概念部分 1.1 大数据、数仓、数据湖、中台的概念 区别数仓数据湖使用场景批处理&#xff0c;BI&#xff0c;数据可视化机器学习、预测分析、数据分析Schema写入型读取型数据源类型OLTP为主的结构化数据loT&#xff0c;日志&#xff0c;各个端等结构非结构均可性价比需要快…

牛客刷题总结——Python入门08:面向对象、正则表达式

&#x1f935;‍♂️ 个人主页: 北极的三哈 个人主页 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;Python领域优质创作者。 &#x1f4d2; 系列专栏&#xff1a;《牛客题库-Python篇》 &#x1f310;推荐《牛客网》——找工作神器|笔试题库|面试经验|实习经验内推&am…

Design A Youtube

title: Notes of System Design No.05 — Design a Youtube description: ‘Design a Youtube’ date: 2022-05-14 13:45:37 tags: 系统设计 categories: 系统设计 01. Funtional Requirements 02. Non Functional Requirements 03.Assumption 04 API 05 High Level Design 上…

05 MSYS2中安装树莓派32位和64位ARM交叉编译工具

作者将狼才鲸创建日期2022-11-14 Gitee源码和工程地址&#xff1a;才鲸嵌入式 / 开源安防摄像机&#xff08;嵌入式软件&#xff09;CSDN文章地址&#xff1a;项目介绍&#xff1a;开源安防摄像机&#xff08;嵌入式软件&#xff09; 4.3 MSYS2中安装32位和64位ARM交叉编译工具…

1524_AURIX TC275存储分布_下

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 继续前面的学习&#xff0c;这一次把这个小章节的剩余信息看完。 这一部分是外设相关的寄存器地址区间描述&#xff0c;看起来一个模块的地址空间占用基本都是256个字节。具体包括什么暂时…

Unity技术手册-UGUI零基础详细教程-Graphic Raycaster 射线检测和Canvas Group

往期文章分享点击跳转>《导航贴》- Unity手册&#xff0c;系统实战学习点击跳转>《导航贴》- Android手册&#xff0c;重温移动开发 本文约3千字&#xff0c;新手阅读需要6分钟&#xff0c;复习需要2分钟 【收藏随时查阅不再迷路】 &#x1f449;关于作者 众所周知&#…