【Python笔记】嵌套:两个for循环的嵌套。Python面试常见问题。

13 篇文章 0 订阅
2 篇文章 0 订阅

嵌套


for循环可以用来遍历某一对象
 遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次

基本知识

一. 打印图形1

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

代码
分析:
步骤一、打印五个*

for c in range(5):

步骤二:打印三行

for r in range(3):

步骤三:打印整体,遵循外层循环控制行,内层循环控制列

for r in range(3):     #  0        1          2     行
    for c in range(5): #01234     01234     01234   列
        print("*",end="")   # end=""就是不换行,在一行输出 ,  
    print()  #换行

二.打印一个四行六列的图形2

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

程序:

for r in range(4):      #打印4行   0          1        2        3 
    for c in range(6):  #打印6列  012345   012345    012345    012345
        if r % 2 == 0:  #偶数行
            print("*",end="")   #打印*  不换行
        else:
            print("#",end="")   #打印#   不换行
    print()

三.打印图形3

#      0
##     01 
###    012
####   0123

程序

for r in range(4):       #0   1    2    3
    for c in range(r+1): #0   01   012   0123
        print("#", end="")
    print()

四.打印图形4

4行     空格     #
####           0123
 ###     0      012
  ##     01      01
   #     012      0

程序:

for r in range(4):         #0    1    2     3
    for c in range(r):     #     0    01   012
        print(" ", end="") #打印空格
    for c in range(4-r):   #0123 012  01    0
        print("#",end="")  #打印#
    print()

面试常见题目

下面两个题为Python常见面试题:
问题一:列表中是否具有相同元素 [1,5,7,4,5,0,5,6,9],
要求:不允许使用不允许用任何函数实现,利用两层的for循环实现

核心:所有元素间两两比较
思想:先取后比
取出第一个元素,与后面的每一个进行比较.
取出第二个元素,与后面的每一个进行比较.
取出第三个元素,与后面的每一个进行比较.

思想

list01 = [1,5,7,4,5,0,5,6,9]
if list01[0] == list01[1]:
    print("具有相同元素")

if list01[0] == list01[2]:
    print("具有相同元素")

if list01[0] == list01[3]:
    print("具有相同元素")
    ...
#取出第一个元素,与后面(1,2,3....)进行比较.
for c in range(1,len(list01)):
    if list01[0]  == list01[c]:
        print("具有相同元素")

#取出第二个元素,与后面(2,3....)进行比较.
for c in range(2,len(list01)):
     if list01[1]  == list01[c]:
         print("具有相同元素")

#取出第三个元素,与后面(3....)进行比较.
for c in range(3,len(list01)):
     if list01[2]  == list01[c]:
        print("具有相同元素")

代码:

state = False  #假设没有相同元素
list01 = [1,5,7,4,5,0,5,6,9]
# 取出前面的元素
for r in range(len(list01)-1):
    #取出后面的元素
    for c in range(r+1,len(list01)):
        #进行比较,如果发现相同元素
        if list01[r] == list01[c]:
            state = True   #假设不成立,有相同元素
            break  #只能退出就近(内)循环体
    if state:
        break  #退出外层循环
if state:
    print("具有相同元素")
else:
    print("不具有相同元素")

问题二:不允许用任何函数实现,利用两层的for循环实现 ,两两元素比较思想。对列表进行排序:[1,5,7,4,5,0,5,6,9]
核心:两两元素进行比较, 发现更大的或者更小的则交换
解决方案类似问题一

list01 = [1,5,7,4,5,0,5,6,9]
for r in range(len(list01) - 1):
    for c in range(r + 1, len(list01)):
        if list01[r] > list01[c]:
            # 交换
            list01[r], list01[c] = list01[c], list01[r]

print(list01)     #打印结果:[0, 1, 4, 5, 5, 5, 6, 7, 9]

附加:列表嵌套推导式

list01 = ["a", "b", "c"]
list02 = ["A", "B", "C"]
# list03 = []
# for r in list01:
#     for c in list02:
#         list03.append(r+c)

list03 = [r + c for r in list01 for c in list02]
print(list03)  #打印结果:['aA', 'aB', 'aC', 'bA', 'bB', 'bC', 'cA', 'cB', 'cC']

练习:实现两个列表的全排列
[“香蕉”,“苹果”,“哈密瓜”]      [“可乐”,“牛奶”]

list03 = ["香蕉","苹果","哈密瓜"]
list04 = ["可乐","牛奶"]
list05 = []
for r in list03:
    for c in list04:
        list05.append(r+c)

list06 = [r+c for r in list03 for c in list04]
print(list06) 

打印结果

['香蕉可乐', '香蕉牛奶', '苹果可乐', '苹果牛奶', '哈密瓜可乐', '哈密瓜牛奶']

总结:外层循环控制行,内层循环控制列

  • 5
    点赞
  • 29
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:创作都市 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

万物皆可.C

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值