Python每日一练 · 四道经典选择题(含详细解析)

Python每日一练 · 四道经典选择题(含详细解析)

Python每日一练 · 四道经典选择题(含详细解析)

本文精选自牛客网 Python 刷题记录,每道题附详细解析、知识拓展和个人思考。适合查漏补缺,夯实基础。

目录


题目1:capitalize() 的返回值

题干
下面这段 Python3 代码运行后,ab 分别输出什么?
之前我一直没注意这个细节,今天终于搞懂了。

a ='python' b = a.capitalize()print(a)print(b)

选项:

A. python python

B. python Python

C. python PYTHON

D. Python Python

我的答案:A(我最初以为 capitalize() 会修改原字符串)

正确答案:B

解析:
capitalize() 方法将字符串的第一个字符转换为大写,其余字符转换为小写,并返回一个新字符串,原字符串 a 不变。所以 a 仍是 ‘python’,b 是 ‘Python’。输出结果为:

text
python
Python
因此选 B。

知识点拓展:

capitalize() 只转换首字母,且其他字母转为小写。

如果想将每个单词首字母大写,用 title()。

其他大小写转换方法:upper()、lower()、swapcase()。

字符串是不可变对象,所有修改操作都返回新字符串,原字符串不受影响。

题目2:字典的键可以是元组吗?

题干
以下代码运行后,输出什么?
做完这道题我才发现,原来我一直误解了字典与元组的区别

dicts ={} dicts[(1,2)]=({3,(4,5)})print(dicts)

选项:

A. 报错

B. {(1, 2): {(4, 5), 3}}

C. {(1, 2): [(4, 5), 3]}

D. {(1, 2): [3, 4, 5]}

我的答案:C(我以为集合会转成列表)

正确答案:B

解析:

字典的键必须是可哈希的(不可变类型)。元组 (1,2) 是不可变的,因此可以作为键。

值是一个集合 {3, (4, 5)},集合本身是可变的,但作为值没有问题。

集合是无序的,输出时元素顺序可能不同,但元素是 3 和 (4,5),所以选项 B 符合。

选项 C 是列表,不符合;D 的元素不对。

知识点拓展:

可哈希类型:不可变类型如 int、str、tuple;可变类型如 list、dict、set 不可哈希。

集合内的元素也必须是可哈希的,所以集合可以包含元组,但不能包含列表。

打印集合时,顺序可能与定义时不同,这是集合的无序性。
接下来这道题更有意思,考查的是默认参数的调用

题目3:默认参数的陷阱

题干:
依次调用 add_user(‘Alice’),再调用 add_user(‘Bob’),两次调用分别返回的列表是什么?

defadd_user(name, users=[]): users.append(name)return users 

选项:

A. 第一次 [‘Alice’], 第二次 [‘Bob’]

B. 第一次 [‘Alice’], 第二次 [‘Alice’, ‘Bob’]

C. 第一次 [‘Alice’, ‘Bob’], 第二次 [‘Alice’, ‘Bob’]

D. 两次均抛出 TypeError

我的答案:A(我以为每次调用都会创建新列表)

正确答案:B

解析:
Python 函数的默认参数在定义时只计算一次,后续调用如果没传该参数,会共用同一个默认对象。因此:

第一次调用后,默认列表变为 [‘Alice’];

第二次调用时,仍使用同一个列表,追加 ‘Bob’ 后变为 [‘Alice’, ‘Bob’]。

所以第一次返回 [‘Alice’],第二次返回 [‘Alice’, ‘Bob’]。

知识点拓展:

避免使用可变对象作为默认参数,可以用 None 并在函数内部创建新列表。

defadd_user(name, users=None):if users isNone: users =[] users.append(name)return users 

这个陷阱常见于初学者,也是面试常考题。

题目4:divmod() 的返回值

这道题我第一眼差点选对,因为divmod的用法
题干:
以下代码运行后输出什么?

a =100 b =14print(divmod(a, b))

选项:

A. (7, 0)

B. (7, 2)

C. [7, 2]

D. None

我的答案:C(我以为返回列表)

正确答案:B

解析:
divmod(a, b) 返回一个元组 (a // b, a % b)。100 除以 14,商为 7,余数为 2,所以结果是 (7, 2)。

知识点拓展:

divmod() 适用于整数和浮点数,返回的商是向下取整。

可以用于同时获取商和余数,比分别计算更高效。

返回值是元组,因此可以用 q, r = divmod(a, b) 解包。

今日总结

今天这四道题涉及:

(1) 字符串方法(capitalize)
(2) 字典键的合法性(可哈希要求)
(3) 函数默认参数的陷阱
(4) 内置函数 divmod 的返回值

其中默认参数是我最容易出错的地方,以后要特别注意避免使用可变默认参数。你也遇到过类似的问题吗?欢迎在评论区留言讨论。

本文首发于 ZEEKLOG,题目来源:牛客网 Python 练习题。
如果觉得有帮助,请点赞、收藏、关注,你的支持是我更新的动力!

Read more

【JAVA 进阶】Spring Cloud 微服务全栈实践:从认知到落地

【JAVA 进阶】Spring Cloud 微服务全栈实践:从认知到落地

本文采用“总—分—总”结构,围绕 Spring Cloud 在微服务架构中的核心能力进行系统讲解。以理论为主、代码为辅,提供清晰多级目录与落地建议,适合已有 Spring Boot 基础、准备或正在进行微服务实践的工程师。 文章目录 * 1. 总览与定位 * 1.1 微服务背景与挑战 * 1.2 Spring Cloud 生态与版本矩阵 * 1.3 微服务能力全景图 * 2. 服务注册与发现 * 2.1 核心概念与术语 * 2.2 组件对比:Eureka / Consul / Nacos * 2.3 快速实践:Eureka Server 搭建 * 2.4

By Ne0inhk

最新版】Java JDK 安装与环境配置教程(附图文超详细,Windows+macOS 通用)

【2026最新版】Java JDK 安装与环境配置教程(Windows + macOS 超详细图文) 截至2026年1月,最新长期支持版(LTS) 是 JDK 25(2025年9月发布),推荐大多数开发者使用。它提供长期安全更新和稳定性。下一个非LTS版本JDK 26预计2026年3月发布,目前处于早期访问阶段。 推荐下载来源:Eclipse Adoptium Temurin(免费、开源、TCK认证、高性能,支持多平台)。避免旧版Oracle商业许可限制。 下载地址:https://adoptium.net/temurin/releases/ 选择 JDK 25(最新LTS),根据系统选包类型(Windows用MSI,macOS用PKG)。 1. Windows 系统安装与配置 步骤1:下载安装包 访问Adoptium网站,选择 Temurin

By Ne0inhk
JavaSE基础-Java字符串转整数与拼接实战指南

JavaSE基础-Java字符串转整数与拼接实战指南

目录 Java 核心知识点:字符串转整数与字符串相加 一、 字符串转整形数字 1.1 精简版(快速上手) 1.2 详细版(机制与陷阱) 1.3 关键陷阱总结表 二、 字符串相加 2.1 精简版(性能核心) 2.2 详细版(编译器优化与陷阱) 2.3 性能选择决策树 💡 一句话总结 本文总结Java中字符串转整数和字符串相加的核心知识点:1. 字符串转整数:推荐使用Integer.parseInt()方法,需注意处理NumberFormatException异常,对带空格的字符串要先trim(),大数值可使用Long.parseLong()或BigInteger。2. 字符串相加:编译期常量可使用+运算符(会被优化),但循环中必须使用StringBuilder以避免性能问题(性能差距可达200倍),多线程场景用StringBuffer,

By Ne0inhk
从0到1:我的飞算JavaAI实战之旅,效率飙升10倍不是梦!

从0到1:我的飞算JavaAI实战之旅,效率飙升10倍不是梦!

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。ZEEKLOG优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk) 💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送ZEEKLOG评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的ZEEKLOG昵称,拉你进群,互相学习共同进步。

By Ne0inhk