2021-01-26python嵌套for循环练习题

(1)输出99乘法表

1*1
1*2   2*2   
1*3   2*3   3*3
1*4   2*4   3*4   4*4   
1*5   2*5   3*5   4*5     5*5
1*6   2*6    3*6  4*6              6*6
1*7   2*7    3*7                                 7*7
1*8   2*8    3*8                                 7*8      8*8
1*9   2*9    3*9                                 7*9      8*9         9*9

解题:竖向找规律

for  i in  range(1,10):
      if i==1:
         for j   in range(1,10):
               print(i*j)
     else:
           for item in range(2,10):
                print(i*item)

其他答案:(横向找规律)

for i  in range(1,10):
     for  j in range(1,i+1):
         print("{}*{}={}  ".format(i,j,i*j),end=' ')#不换行输出
print()


(2)经典冒泡算法
利用for循环,完成a=[1,7,4,89,34,2]的冒泡排序
冒泡排序:小的排前面,大的排后面

冒泡: 相邻之间的2个数据进行比较,小的和大的互换位置,再拿互换后的小数据依次再和后面的数据比较,每次比较后都将小的和大的互换位置。(备注:最多比较n-1轮,n代表元素个数)

a=[1,7,4,89,34,2]
第1轮比较:1和7比较,1小,不用换位置,1再和4比较,1小,不用换位置,一次进行下去---》得到1最小。比较结果:
a=[1,7,4,89,34,2]

第2轮: 7和4比较,4小,4换到7的位置上,4和89比较,4小,不用换位置,4和34比较。不用换位置,4和2比较,2小,2换到4的位置上---》得到2最小
a=[1,2,7,89,34,4]

第3轮:7和89比较,不换位置,7和34比较,不换位置,7和4比较,4换到7的位置上
a=[1,2,4,89,34,7]

第4轮:89和34比较,34换到89位置上,34和7比较,7 换到34位置上
a=[1,2,3,4,7,89,34]

第5轮比较:89和34比较;34和89换位置
a=[1,2,3,4,7,34,89]

上面的思路是:每次比较出得到最小的那个数和后面的数一次比较

下面的思路是:每次比较初最大的那个数
a=[1,7,4,89,34,2]
第一轮:1和7比较,不用换位置,7和4比较,4和7换位置,7和89比价,89和7换位置,89和34比较,89和34换位置,89和2比较,89和2换位置
a=[1,4,7,34,2,89]
第二轮比较:1和4,不换,4和7不换,7和34不换,34和2换,34和89不换
a=[1,4,7,2,34,89]
第三轮:1和4不换,4和7不换,7和2换,7和34不换,34和89不换
a=[1,4,2,7,34,89]
第四轮:1和4不换,4和2换,4和7不换,7和34不换,34和89不换
a=[1,2,4,7,34,89]

解题:

temp=0
a=[1,7,4,89,34,2]
for i in  range(len(a)):
   for j in range(len(a)):
        if  a[i] >a[j+1]:
              temp=a[i]
              a[i]=a[j+1]
              a[j+1]=temp


其他参考答案:

a=[1,7,4,89,34,2]
for i in range(len(a)-1):#用n-1来控制循环的次数
        for j in range(len(a)-1):#每一次循环对两两相邻的数据进行比较并用if判断后,进行位置替换
        if a[j]>a[j+1]:
                 a[j],a[j+1]=a[j+1],a[j]
print(a)
打印结果:
[1,2,4,7,34,89]

(3)有1,2,3,4 这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别是什么?abc 且a!=b!=c

解题:

count=0
List=[]
for  a in   range(1,5):
        for b in range(1,5):
            for c  in range(1,5):
                if a!=b and b!=c  and a!=c:
                        count+=1
                        num=a*100+b*10+c
                        List.append(num)

print("满足条件的数字有{}个:{}'.format(count,List))

(4)使用嵌套for循环输出如下直角三角型

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

解题:

for  i  in  range(1,6):
            print(i* '*')#没结束一次循环,才会换行

其他参考答案:

for i  in range(1,6):
     for j in range(i):
          print('*',end='  ')#每一层for循环结束后,才换行
     print()

(5)使用嵌套for循环输出等边三角型(三个变均为5个*)


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

for  i in range(1,6):
       for  j in range(i):
           print('  ',end=' ')
print('*   '*i)

打印结果:
             *
           *   *
         *   *   *
       *  *    *   *
     *  *    *   *   *

解决思路:以左边议一条边充当直角三角型的斜边,打印出倒三角直角型

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容