惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
F
Fortinet All Blogs
B
Blog
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
The Register - Security
The Register - Security
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
B
Blog RSS Feed
WordPress大学
WordPress大学
Recorded Future
Recorded Future
Recent Announcements
Recent Announcements
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Secure Thoughts
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Webroot Blog
Webroot Blog
AWS News Blog
AWS News Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
O
OpenAI News
月光博客
月光博客
H
Hacker News: Front Page
S
Security Affairs
W
WeLiveSecurity
The Hacker News
The Hacker News
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
T
The Blog of Author Tim Ferriss
Spread Privacy
Spread Privacy
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
M
MIT News - Artificial intelligence
A
About on SuperTechFans

qlAD 的技术笔记

2026 年 6 月 7 日 -- 我有社交恐惧症,恐惧外面到处雷电风雨声(大学生活记录) 手把手带你实现哈希表(C/C++ 数据结构) 手把手带你实现图结构(C/C++ 数据结构) 手把手带你实现二叉树(C/C++ 数据结构) 手把手带你实现栈和队列(C/C++ 数据结构) 手把手带你实现单/双链表(C/C++ 数据结构) 手把手带你实现动态数组(C/C++ 数据结构) 2026 年 1 月 2 日 -- 我不怕冷,因为我内心炽热 【2025 年度总结】(大学生活记录) 2025 年 12 月 2 日 -- 省电模式:大一 100 天耗电日志(大学生活记录) 蓝桥杯备赛第一期 —— 枚举与模拟 2025 年 11 月 3 日 -- 用爱发电、大爱无私(大学生活记录) 使用循环嵌套输出规则图形找规律讲解(嵌套循环-图形输出) 2025 年 10 月 1 日 -- 二字开头第一年的生日记录及感悟随笔(大学生活记录) 2025 年 9 月 24 日 -- 开学后的第一课及军训汇演(大学生活记录) Python 初级 03 -- 程序设计的三种结构之选择结构和循环结构 Python 初级 02 -- 基础的数据类型和输入输出 2025 年 9 月 17 日 -- 大连 2025 国际大体联足球世界杯(大学生活记录) Python 初级 01 -- 初识编程、理解计算机语言及程序运行方式 适合大一新生学习编程的前一课 -- 编程先导(编程的本质) 2025 年 9 月 12 日 -- 三天军训感受以及一些七七八八(大学生活记录) 2025 年 9 月 9 日 -- 体检、军训前的准备(大学生活记录) 适合大一新生的计算机基础知识 -- 个人认为足够版 2025 年 9 月 7 日 -- 既来之、则安之(大学生活记录) C++ 程序的内存布局 —— 代码区、全局/静态区、栈区和堆区 联想小新 pro 16 2025 开箱记录:跳过联网、office 激活、更换 win 11 专业版 R 语言中的数学函数 计算机软件著作权申请过程记录 从聚类到回归:用 Python 解析鸢尾花数据集的完整数据科学流程 条件概率、全概率与贝叶斯公式 —— 一篇文章带你死磕概率公式 高中化学物质反应规则表 —— 方程式之间也有规律可循 集合元素性质、关系、子集公式、基本运算 —— 一篇文章带你全方面死磕集合 如何为你的项目选择合适的许可证 -- 全方位指南 解释 3:1 和 9:3:3:1 的详细来源 —— 建立减数分裂与孟德尔遗传学定律之间的联系 重新设置磁盘分区以及 Btrfs 子卷(subvolume)布局的无损方案 零基础实战:用 Docker 启动 dockermailserver 绕过 25 端口封锁搭建个人邮箱服务器 基于 GitHub Actions + OSS 的自托管 APT 仓库全面指南 如何在安装 Debian 时配置 Btrfs 子卷 | 详细分步指南 一个合格的个人网站站长应该知道哪些事? CSS 基础入门教程 —— 选择器、样式声明 HTML 基础入门 —— 基本结构和语法 给博客添加一个文章数据统计的页面 Git 学习笔记(命令备忘表) Anki 牌组选项详细解释与设置 手动编译带有 KernelSU 的 OnePlus 6 内核 安卓类原生系统补全计划 —— PixelExperience(一加 OnePlus) 如何使用 use-sound 为 React 应用添加声音效果 标准化项目的 GitHub Flow 工作流 如何搭建设计自己的博客网站? 使用安知鱼主题同款的 Twikoo 评论组件 配置 GitHub Actions 实现自动化提交百度收录 第00期 | 环境搭建 & 递归 (一) | 基本数列递归 逐字符讲解 C 语言 HelloWorld 程序 2023 年回顾 🤟 Anki:记忆神器,助你高效学习 Gentoo 学习笔记 美化你的 PixelExperience OS Markdown 语法指南 搭建 OneDrive 目录索引 为什么用 65 表示大写字母 A
Python 初级 04 -- 目前为止 Python 中你们做题可能会遇到的问题以及七七八八
qlAD · 2025-09-27 · via qlAD 的技术笔记

cover

根据教学反馈和之前我踩过的坑,精心整理的目前为止你们会遇到的 20 道新手 Python 语言问题

1、什么时候加 ""?

一句话,当你想让输出原封不动地打印出来时,你需要加 ""

举个例子:

# 输出 hello world
print("hello world")

# 输出 3 * 5 = 15 其中 15 是 3 * 5 的结果
print("3 * 5 =", 3 * 5)
print(f"3 * 5 = {3 * 5}")

print() 函数接收的参数可以是多个,多个参数之间用 , 分隔。打印的结果会将参数用空格连接起来。

其中 sep 参数可以设置多个参数之间的分隔符,默认为 " "end 参数可以设置整个打印结束后的分隔符,默认为 "\n"

2、input() 函数里写不写提示语句?

不要!因为有些 oj 会根据文本判断来评判你的代码,如果你在 input() 函数里写提示语句,那么提示语句就会输出到控制台,导致 oj 认为你的代码有错误,从而导致你的代码被判为错误。

举个例子:

# 计算两个数的和
# 输入:1 2
# 输出:3
a, b = input().split()
print(int(a) + int(b))

如果你写成 a,b=input("请输入两个数:").split(),那么可能会导致 oj 认为 请输入两个数: 也是输出的内容,从而导致你的代码被判为错误。

3、用 int() 还是 float()?

看题目要求,题目说用什么就用什么。题目中的实数就是浮点数。

4、如何保留 x 位小数?

这属于格式化的问题,使用 f-string 格式化即可。

pi = 3.141592653589793

# 保留 2 位小数
print(f"{pi:.2f}")

# 保留 3 位小数
print(f"{pi:.3f}")

# 保留 4 位小数
print(f"{pi:.4f}")

5、如何同时给多个变量赋值?

= 符号不仅可以赋值给一个变量,还可以赋值给多个变量。

a,b,c=[1,2,3]
print(a,b,c)

或者直接用 , 分割多个值,然后用 = 赋值给多个变量。

6、如何同时输入赋值多个变量?

之前说过 split() 函数是将字符串默认按空格将其分割成一个字符串列表。

比如:

text1='1 2 3'
print(text1.split())

text2='hello world'
print(text2.split())

text3='hello,nihao,welcome'
print(text3.split(","))

所以 input().split() 实际上是将一个字符串列表赋给多个变量。

7、什么时候用类型转换?

在 python 中,接收输入的变量类型是字符串,所以如果你要用数字进行一些运算,那么你需要将字符串转换为数字。

举个例子:

# 输入一个数,输出这个数的平方
a=input()
a=int(a)
print(a**2)

a=input()
print(int(a)**2)

a=int(input())
print(a**2)

# 输入两个数,输出这两个数的和
a,b=input().split()
a=int(a)
b=int(b)
print(a+b)

a,b=map(int,input().split())
print(a+b)

这里的 map() 函数的说明文档如下:

mpa函数

8、map() 函数怎么用?

map() 函数的参数是两个,第一个参数是函数,第二个参数是可迭代对象。

比如:

# 接收多个变量的输入赋值并转换为数字
a,b=map(int,input().split())
print(a+b)

# 接收多个变量的输入并转换为绝对值
a, b = map(abs, map(int, input().split()))
print(a , b)

9、整数计算为什么是小数?

在 python 中,整数的除法结果是浮点数。

a,b=10,5
print(a+b)      # 15
print(a-b)      # 5
print(a*b)      # 50
print(a/b)      # 2.0
print(a//b)     # 2
print(a%b)      # 0

这是 python 的特性,在其他语言中,计算 5 / 2 的结果是 2。而 python 中,为了避免整数除法的结果被截断,从而减少数据丢失

C 语言整数除法

所以 python 为了和其他语言尽量保持相同的功能,于是便有了 // 运算符,它可以实现整数除法。

10、如何提取一个数的每一位?

这种叫拆位运算。

  1. 取个位:直接 %10 来算
  2. 去掉最后一位: //10
  3. 去掉最后两位: //100

举个例子:

# 倒叙输出一个 4 位数(每一位都不为 0)

num=int(input())

a=num//1000
b=num//100%10
c=num//10%10
d=num%10

print(d*1000+c*100+b*10+a)

11、有哪些好用的内置数学函数?

  1. abs() 函数:返回一个数的绝对值
  1. pow() 函数:返回一个数的幂
  1. round() 函数:返回一个数的四舍五入值
  1. max() 函数:返回一个数的最大值
print(max(1,2,3,4,5)) # 5
  1. min() 函数:返回一个数的最小值
print(min(1,2,3,4,5)) # 1
  1. sum() 函数:返回一个数的和
print(sum([1,2,3,4,5])) # 15
  1. sorted() 函数:返回一个排序后的列表
print(sorted([1,21,3,4333,5])) # [1, 3, 5, 21, 4333]

12、如何处理若干个数据?

输入若干个整数,输出这些整数的和

由于不知道有多少个数据,所以不能用循环来处理

在 python 中,我们可以用 list() 函数来处理。

# 输入若干个整数,输出这些整数的和
a=list(map(int,input().split()))
print(sum(a))

其中的 map 函数功能是将一个字符串列表转换成一个整数列表的映射,然后 list 函数将这个映射转换成一个列表。

13、迭代的思想-斐波那契?

现定义斐波那契数列,其前两项为 F1=1F_1=1F2=1F_2=1,对于 n>=3n>=3Fn=Fn−1+Fn−2F_n=F_{n-1}+F_{n-2}

则数列的前几项为:1,1,2,3,5,8

求斐波那契数列的第 n 项是多少?

# 输入一个数,输出斐波那契数列的第 n 项
n=int(input())

a,b=1,1

for i in range(n-1):
    next  = a+b   # 新的 F(k+1)
    prev  = a     # 旧的 F(k)
    a = next
    b = prev
print(b)

循环开始前:

a=f(2)=1,b=f(1)=1

每次循环把 (a,b) 滚动成 “下一项” 与 “前一项”:

轮次a (F(k+1))b (F(k))
初值1 (F2)1 (F1)
12 (F3)1 (F2)
23 (F4)2 (F3)
35 (F5)3 (F4)
48 (F6)5 (F5)

14、如何判断一个数是否为闰年?

闰年的判断标准是:

  1. 能被 4 整除,但不能被 100 整除
  2. 能被 400 整除

举个例子:

# 输入一个数,判断这个数是否为闰年
a=int(input())
if a%4==0 and a%100!=0 or a%400==0:
    print("闰年")
else:
    print("平年")

15、如何接收 T 组输入?

平时的程序运行后输入输出就结束进程了,但是我们一般会遇到让用户输入 T 组数据,然后我们对这 T 组数据进行处理。

在 python 中,我们可以用 for 循环来处理 T 组数据。

举个例子:

# 先输入一个整数 T,表示有 T 组数据
# 之后 T 行中每行有 2 个整数
# 每一行输出该组数据的和

T=int(input())

for i in range(T):
    a,b=map(int,input().split())
    print(a+b)

或者还可以这样

T=int(input())

while T > 0:
    T = T - 1
    a,b=map(int,input().split())
    print(a+b)

16、当 xxx 后停止输入?

可能还会遇到:当且仅当 a=0 且 b=0 时,输入结束,该组数据不处理。

举个例子:

# 输入两个数,当且仅当 a=0 且 b=0 时,输入结束,该组数据不处理

while True:
    a,b=map(int,input().split())
    if a==0 and b==0:
        break
    print(a+b)

17、break 和 continue 怎么用?

break 语句用于跳出循环,而 continue 语句用于跳过当前循环的剩余部分,继续下一次循环。

举个例子:

# 输入一个数,如果输入的数是 0,则跳出循环
while True:
    a=int(input())
    if a==0:
        break
    print(a)

再举个例子:

# 输入一个数,如果输入的数是 0,则跳过当前循环的剩余部分,继续下个循环
while True:
    a=int(input())
    if a==0:
        continue
    print(a)

18、for-else 循环怎么用?

for-else 循环是 for 循环的扩展,当 for 循环正常结束时,会执行 else 块中的代码。

举个例子:

# 输出 100 以内的质数

for i in range(2,100):
    for j in range(2,i):
        if i%j==0:
            break
    else:
        print(i)

但凡遍历到了一个因子,就跳出循环,且由于循环没有正常结束,所以不会执行 else 块中的代码。

19、如何判断一个数是否为质数?

质数的定义:大于 1 且仅能被 1 和自身整除的正整数。

举个例子:

# 给定 T 个正整数 n,判断每个 n 是否为素数。
T = int(input())

for _ in range(T):
    num = int(input())
    if num < 2:
        print("No")
        continue
    for i in range(2, num):
        if num % i == 0:
            print("No")
            break
    else:
        print("Yes")

但凡遍历到了一个因子,就打印 No 然后再跳出循环,且由于循环没有正常结束,所以不会执行 else 块中的代码。

20、有没有感觉你的代码很低效?

拿 18 题来说,有必要写 for i in range(2, num) 吗?

如果 num 是一个很大的数,岂不是要从 2 开始遍历到 num,每个数运算一次看看是否能被 num 整除,这样的话效率会很低。

为什么慢:假设 num = 1 000 000 000(一个 10 亿级的素数),就会将近循环 10 亿次,效率会很低。

实际上,我们只需要这么写就可以快上万倍:for i in range(2, int(num**0.5) + 1):

如果 num 是 1 000 000 000,那么 int(num**0.5) + 1 的结果是 31624,也就是我们只需要遍历到 31624 就可以了。足足快了 3 万倍。

为什么呢?

因为一个数的因子是成对出现的,假设 num 不是质数,那么它一定可以写成两个因子相乘的形式:num=a∗bnum=a*b

其中 a<=ba<=b,那么有 a2<=a∗b<=b2a^2<=a*b<=b^2 ,而 a∗b=numa*b=num,所以 a2<=num<=b2a^2<=num<=b^2,那么 a<=sqrt(num)a<=sqrt(num),因此只需要遍历到 sqrt(num)sqrt(num) 就可以了。

最后的 +1 因为 range() 函数的参数是左闭右开的,所以要 +1。