python中循环结构学习

1.技术面试题

(1)详细描述单调栈的工作原理和应用场景

答:单调栈的核心是在入栈和出栈过程中维持栈的单调性,具体可分为 “单调递增栈” 和 “单调递减栈”,两者原理类似,仅维护的顺序相反。以
(单调递减栈)为例:若当前元素小于等于栈顶元素:满足单调递减,直接入栈,若当前元素大于栈顶元素:破坏单调性,需弹出栈顶元素,直到栈顶元素大于当前元素,再将当前元素入栈。单调栈的核心优势是高效解决 “在序列中寻找某个元素的最近特殊元素(如更大、更小、更高)” 的问题。典型的有“接雨水问题”,“下一个更大元素问题”。

(2)详细描述单调队列的工作原理和应用场景

答:单调队列的核心是在元素入队和出队过程中维持队列的单调性,具体可分为 “单调递增队列”(队头到队尾元素递增)和 “单调递减队列”(队头到队尾元素递减)以单调递减为例:当新元素入队时,若队列非空且新元素大于队尾元素,则删除队尾元素,重复上述操作,直到队尾元素大于等于新元素,再将新元素的索引加入队尾。单调队列的核心优势是高效解决 “滑动窗口中的极值查询” 或 “范围性最优元素” 问题,典型的有“滑动窗口最大值和最小值”。

2.HR面试题

(1)如果竞争对手用双倍薪资挖你,你会怎么选择?

答:分析:看我对未来有什么规划

回答:我来贵公司是看重了一些发展的前景的,我想在贵公司做出一些成就,以及达到一定高度。薪资的确是工作的重要目的,却不是全部。所以我不会去。

(2)我们觉得你今天表现一般,不符合岗位要求,你有什么想说的?

答:分析:想看看我的抗压能力,以及总结反思能力。

回答:非常感谢贵公司给以的这个机会,让我认识到自己对岗位要求还有不足。同时我也尊重公司的决定,但还是希望给位领导给我一些建议或是指点我的不足之处。同时我在未来也会继续加强我的专业水平,这也能让我在往后的任职有很大的帮助,再次感谢。

3.选择题

(1)在Python中,以下哪个不是循环控制语句?

A. break
B. continue
C. pass
D. return

答:C

(2)以下代码的输出结果是什么?

for i in range(5):
    if i == 3:
        continue
    print(i, end=' ')

A. 0 1 2 3 4
B. 0 1 2 4
C. 0 1 2
D. 3

答:B

(3)完成以下代码,使其能够打印出1到100之间所有的偶数:

for i in range(1, 101):
    if ______:
        print(i, end=' ')

A. i % 2 == 0
B. i % 2 == 1
C. i / 2 == 0
D. i // 2 == 0

答:A

(4)以下代码有一个错误,导致它无法正确计算1到10的和。请选择正确的修改方案:

sum = 0
i = 1
while i < 10:
    sum += i
    i += 1
print(sum)

A. 将i < 10改为i <= 10
B. 将i += 1改为i += 2
C. 将sum += i改为sum = sum + i + 1
D. 将i = 1改为i = 0

答:A

(5)以下代码的输出结果是什么?

for i in range(3):
    for j in range(2):
        print(f"({i},{j})", end=' ')

A. (0,0) (0,1) (1,0) (1,1) (2,0) (2,1)
B. (0,0) (1,0) (2,0) (0,1) (1,1) (2,1)
C. (0,0) (0,1) (0,2) (1,0) (1,1) (1,2)
D. (0,0) (1,1) (2,2)

答:A

(6)完成以下代码,使其能够打印出斐波那契数列的前10个数:

a, b = 0, 1
for _ in range(10):
    print(a, end=' ')
    ______

A. a, b = b, a + b
B. a, b = a + b, b
C. a, b = b, a
D. a, b = a + 1, b + 1

答:A

(7)以下代码的输出结果是什么?

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i, end=' ')
else:
    print("Done")

A. 1 2 3 4 5 Done
B. 1 2 4 5 Done
C. 1 2 4 5
D. 1 2 Done

答:B

(8)以下代码的输出结果是什么?

for i in range(1, 5):
    for j in range(1, 5):
        if i * j > 10:
            break
        print(f"{i}*{j}={i*j}", end=" ")
    print()

A.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 3*4=12 
4*1=4 4*2=8 4*3=12 4*4=16 

B.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 

C.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 
3*1=3 3*2=6 3*3=9 

D.

1*1=1 1*2=2 1*3=3 1*4=4 
2*1=2 2*2=4 2*3=6 2*4=8 

答:B

(9)以下代码的输出结果是什么?

for i in range(4):
    for j in range(4):
        if (i + j) % 2 == 0:
            print("*", end="")
        else:
            print("#", end="")
    print()

A.

****
####
****
####

B.

*#*#
#*#*
*#*#
#*#*

C.

*#*#
*#*#
*#*#
*#*#

D.

****
****
****
****

答:B

(10)以下代码的输出结果是什么?

count = 0
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if i != j and j != k and i != k:
                count += 1
print(count)

A. 24
B. 36
C. 60
D. 64

答:A

4.问答题

(1)Python中有哪几种基本的循环结构?请简要说明它们的语法和适用场景。

答:for循环结构:

for 变量 in 数据对象:
    # 循环体
else:  # 可规定条件
    # 循环结束后执行的代码

适用于知道循环次数时比如“计算平均值’'。

while循环结构:

while 条件表达式:
      # 循环体
else: #可规定条件
    # 循环结束后执行的代码

(2)Python中有哪些循环控制语句?它们各自的作用是什么?请给出示例说明。

答:break 语句

立即终止当前所在的循环,跳出整个循环体,执行循环之后的代码。

for i in range(5):
    if i == 3:
        break  
    print(i)
# 输出:0 1 2

continue语句

跳过当前循环的剩余代码,直接进入下一次循环的判断。

for i in range(5):
    if i == 3:
        continue  
    print(i)
# 输出:0 1 2 4

else 语句

在循环正常结束时执行

for i in range(3):
    print(i)
else:
    print("循环正常结束")
# 输出:
# 0
# 1
# 2
# 循环正常结束

(3)在Python的for循环中,range()函数扮演着重要角色。请详细说明range()函数的语法、参数含义和使用方法,并给出至少3个不同用法的示例。

答:单参数形式:range(stop

stop 表示生成序列的上限(不包含该值)。

返回从0到stop-1的整数序列

双参数形式:range(start, stop)

start(必需)表示序列的起始值(包含该值)。

stop(必需)表示序列的上限(不包含该值)。

返回:从startstop的整数序列。

三参数形式:range(start, stop, step)

start(必需)表示序列的起始值(包含该值)。

stop(必需)表示序列的上限(不包含该值)。

step(必需)表示步长,即相邻两个数之间的差值(默认值为1)。

返回:从start开始,每次增加step,直到不超过stop-1的整数序列。

for i in range(5):
    print(i, end=' ')  # 输出:0 1 2 3 4
    
for i in range(2, 7):
    print(i, end=' ')  # 输出:2 3 4 5 6
    
for i in range(1, 10, 2):
    print(i, end=' ')  # 输出:1 3 5 7 9

(4)什么是嵌套循环?请解释嵌套循环的工作原理。

答:XXXXXXX

(5)编写代码,判断两个矩形的关系

题目描述

判断两个矩形之间的关系:包含,重叠,相离

image-20250304171517426

输入输出描述

输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高

输出两者的关系

示例1

输入:

2.5 4 2.5 43

1.5 5 0.5 3

输出:

包含

示例2

输入:

1 2 3 5.5

3 4 4.5 5

输出:

重叠

示例3

输入:

1 2 3 3

40 45 3 2

输出:

相离

答:

x1,y1,w1,h1 = map(float,input().split(" "))
x2,y2,w2,h2 = map(float,input().split(" "))
a = abs(x1-x2)
b = abs((w1-w2)/2)
c = abs(y1-y2)
d = abs((h1-h2)/2)
e = abs((w1+w2)/2)
f = abs((y1+y2)/2)
if a <= e or c <= f:
    if a <= b and c <= d:
        print("包含")
    else:
        print("重叠")
else:
    print("相离")

(6)编写代码,打印如下数字图案

                        1
                    1	2	1
                1	2	4	2	1
            1 	2	4	8	4	2	1
        1	2	4	8	16	8	4	2	1
    1	2	4	8	16	32	16	8	4	2	1
1	2	4	8	16	32	64	32	16	8	4	2	1

答:

num = int(input())
for a in range(num):
    for _ in range(num-a):
        print(" "*3,end="")
    for i in range(a):
        b = 2**i
        print(f"{b:^2}",end=" ")
    for i in range(a,-1,-1):
        b = 2**i
        print(f"{b:^2}",end=" ")
    print()

(7)编写代码,打印如下星星图案

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

答:

n = int(input())*2
for i in range(1, n*2 + 1,2):
    for k in range(1,abs(i - n //2 - 1),2):
        print(" ",end="")
    for j in range(n // 2 + 1 - abs(i - n//2 - 1)):
        print("*", end="")
    print()

(8)编写代码,求最小公倍数

题目描述

输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15

输入输出描述

输入两个正整数

输出最小公倍数

示例1

输入:

3 9

输出:

9

示例2

输入:

4 6

输出:

12

答:

a,b = map(int,input().split(" "))
num = 0
if a<b:
    num = b
elif a>=b :
    num = a
while num % a !=0 or num % b != 0:
    num += 1
print(num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值