当前位置: 首页 > news >正文

Python每日一题:四道易错题深度解析(变量作用域、逻辑运算、lambda、Py2/3区别)

Python每日一题:四道易错题深度解析(变量作用域、逻辑运算、lambda、Py2/3区别)

大家好,我是大数据专业小彬。今天继续分享在牛客网刷到的四道Python题目,涵盖变量定义顺序、逻辑运算符优先级、lambda表达式以及Python2与Python3的核心区别。每道题都附有详细解析和自己的思考过程,希望能帮助大家夯实基础,避开常见陷阱。

文章目录

  • Python每日一题:四道易错题深度解析(变量作用域、逻辑运算、lambda、Py2/3区别)
    • 题目一:变量使用顺序引发的错误
    • 题目二:逻辑运算符的优先级与短路特性
    • 题目三:lambda表达式的正确理解
    • 题目四:Python2与Python3中range()的区别
      • 总结

题目一:变量使用顺序引发的错误

题目:执行下列Python3语句后的输出结果是什么?

b=2*a/4#! a 还未定义,会报错a="one"print(a,b)

选项:
A. 10
B. one 0.5
C. error
D. one 0
正确答案:C
详细解析
这道题考察的是Python代码的顺序执行特性。Python是解释型语言,代码从上到下逐行执行。第一行 b = 2 * a / 4 中使用了变量 a 进行数学运算,但此时 a 还没有被定义,因此会抛出 NameError: name ‘a’ is not defined。第二行才定义 a = “one”,但程序在第一行已经报错,第三行根本不会执行。所以最终结果是报错

我的思路
我以前习惯用分号把多个语句写在一行,比如 a = 10; b = 0.5; c = a / b; print(a, c),这样写不会出错,但要注意顺序——变量必须先赋值后使用。很多初学者会误以为Python会像某些语言一样“提前扫描”所有变量,其实不会,所以一定要牢记:用之前先定义


题目二:逻辑运算符的优先级与短路特性

题目:Python3中,执行 not 1 and 1 的结果为?
选项:
A. True
B. False
C. 0
D. 1

正确答案:B
详细解析
这道题考察逻辑运算符的优先级短路求值。在Python中,运算符优先级从高到低为:not > and > or。因此 not 1 and 1 相当于 (not 1) and 1。

首先,not 1:1在布尔上下文中为 True,取反得到 False。

然后计算 False and 1:and 运算符短路,如果第一个操作数为 False,直接返回 False,不再计算第二个操作数。
所以最终结果是 False

我的思路
我刚开始想的是 not 1 得到 False,然后 False and 1 应该返回 False,选B。确认了优先级后更加肯定。另外要注意,Python中逻辑运算符返回的不一定是布尔值,比如 1 and 2 返回 2,但这里因为第一个是 False,所以直接返回 False。这个特性在写条件判断时很有用,比如 a and b 可以用来安全地获取属性。


题目三:lambda表达式的正确理解

题目:执行以下Python程序,下列说法中,错误的是?

f=lambdax:x*x# 将匿名函数赋值给变量 fprint(f(2))

选项:
A. 程序的输出结果为4
B. lambda表达式不可以用作函数的参数传递
C. lambda表达式可以赋值给变量
D. 程序不会抛出异常
详细解析
A 正确:lambda x: x * x 定义了一个匿名函数,接受参数 x 返回 x 的平方。f(2) 调用后得到 4,打印输出。

B 错误:lambda表达式完全可以作为函数的参数传递,例如 sorted([1, -2, 3], key=lambda x: abs(x)),这是Python函数式编程的常见用法。所以B说法不正确。

C 正确:lambda表达式可以赋值给变量,如题目中的 f = lambda x: x * x,之后就可以像普通函数一样使用 f。

D 正确:程序没有语法错误和运行时异常,正常执行输出。

因此,错误的说法是B。

我的思路
刚开始学习lambda时,我也以为它只能简单赋值,后来才发现它更强大的地方在于作为高阶函数的参数。比如在 map、filter、sorted 中经常用到lambda。所以B选项是一个常见的误区,要特别注意。


题目四:Python2与Python3中range()的区别

题目:关于Python2和Python3的区别,说法不正确的是?
选项:
A. Python2的默认编码是ASCII
B. Python3的默认编码是UTF-8
C. Python2中range()的返回值是列表
D. Python3中range()的返回值是列表
详细解析
A正确:Python2默认编码是ASCII,所以在处理中文时常需要声明 # -- coding: utf-8 --。

B正确:Python3默认编码是UTF-8,对中文更友好。

C正确:Python2中 range() 返回一个列表,例如 range(5) 得到 [0, 1, 2, 3, 4],会占用内存。

D错误:Python3中 range() 返回的是一个可迭代的range对象(类似于迭代器),它惰性求值,不会立即生成所有元素,从而节省内存。如果需要列表,需用 list(range(…)) 转换。

因此,不正确的说法是D。

我的思路
实际使用中,我经常在Python3中用 range 循环,有时会误以为它是列表,但其实它是迭代器。这个设计是Python3的优化之一,尤其在处理大范围数字时能显著降低内存占用。所以一定要记住:Python3的range是“懒加载”的,不是列表。


总结

今天的四道题分别考察了:

  1. 变量必须先定义后使用,否则报 NameError。

  2. 逻辑运算符优先级:not > and > or,且 and、or 有短路特性。

  3. lambda表达式:可以作为参数传递,也可以赋值给变量,非常灵活。

  4. Python2与Python3的range差异:Python2返回列表,Python3返回迭代器对象。

这些知识点虽然基础,但稍不注意就会掉坑。希望大家在刷题时多思考、多总结,把基础打牢。如果有疑问或者想讨论其他题目,欢迎在评论区留言!

本文是“敲代码的日常+ Python刷题笔记”系列的第X篇,持续更新中,欢迎关注。

http://www.jsqmd.com/news/485273/

相关文章:

  • OpenClaw玩转有道云笔记
  • 超越 Transformer 的架构前瞻
  • 2026年手机摄像头测试方案厂商技术强的品牌推荐 - mypinpai
  • 网络安全向日葵漏洞
  • 学长亲荐 8个降AIGC软件:全行业通用测评,帮你高效降AI率
  • java从头开始-苍穹外卖-day11-数据统计与展示
  • Argo CD 的核心架构组件与作用
  • js 从入门到放弃 3/15
  • 语音算法面试复习系列2——语音信号处理基础(下)
  • Vue案例——面经
  • 图解C语言侵入式双向循环链表与 container_of 宏底层原理
  • 百度文心搜索4.0+C# RAG实战:打造支持实时问答与长文档总结的智能客服
  • 计算机毕业设计springboot基于Spark的用户行为数据挖掘与分析解决方案 SpringBoot框架下融合Spark的用户行为模式识别与智能分析平台 基于SpringBoot与Spark的用户行
  • lossless-claw vs mem0:别再把上下文管理和长期记忆混为一谈
  • JAVA面试题速记-分布式架构知识点-元一软件
  • 2.创建你的第一个FreeRTOS任务(动态与静态)
  • 项目实训开题
  • Three.js制作的3D魔方。
  • 0612-出租车(调价+昼夜)-系统设计(51+SEG+DS1302)
  • TimeLine如何自定义轨道
  • 035-spiderbuf第C12题
  • 嘎嘎降AI和笔灵AI哪个好?花200块实测对比告诉你
  • 手把手教你用嘎嘎降AI处理毕业论文:从上传到下载全流程 - 我要发一区
  • 计算机毕业设计java基于个性化推荐的众筹系统 基于用户画像的智能众筹平台的设计与开发 融合个性化推荐机制的创意项目融资系统的构建与实现
  • 品牌设计集团如何选择?
  • 基于SpringCloud的电子商城系统设计与应用
  • 2026年知网最新AIGC检测算法应对攻略 - 我要发一区
  • InnoDB中的undo日志和历史系统的基础机制
  • 四轮驱动汽车的线控转向系统失效+轨迹跟踪和横摆稳定性、失效容错控制仿真(带复现参考文献)
  • 降AI工具售后对比:退款政策/修改次数/客服响应 - 我要发一区