zoukankan      html  css  js  c++  java
  • 打印一个边长为n的正放形

     1 方法一:
     2 n = int(input('输入边长:'))
     3 for i in range(1, n+1):
     4     for j in range(1, n+1):
     5         if i == 1 or j == 1 or i == n or j == n:
     6             print('*', end=' ')
     7         else:
     8             print(' ', end=' ')
     9     print()
    10 
    11 
    12 输入边长:8
    13 * * * * * * * * 
    14 *                 * 
    15 *                 * 
    16 *                 * 
    17 *                 * 
    18 *                 * 
    19 *                 * 
    20 * * * * * * * *
     1 方法二: 我自己写的,有点啰嗦,for循环会影响执行效率
     2 n = 6
     3 for j in range(n):
     4     if j == 0 or j == n-1:
     5         for i in range(n):
     6             print('*',end=' ')
     7     else:
     8         for i in range(n):
     9             if i >0 and i < n-1:
    10                 print(' ',end=' ')
    11             else:
    12                 print('*',end=' ')
    13     print()
    14 
    15 
    16 * * * * * * 
    17 *            * 
    18 *            * 
    19 *            * 
    20 *            * 
    21 * * * * * * 

    注:以上两种,就是分开处理首行和末行

    方法三:
    n = 5 
    for i in range(n):
        if i % n == 0 or i % (n-1) == 0:
            print('*' * n)
        else:
            print('*' + ' ' *  (n-2) +  '*')
    
    *****
    *       *
    *       *
    *       *
    *****
    
    # i == 0 或 i== 4的时候,正好是首行,末行,所以, i =0 时,取模 n =0
    # i= 4时 ,i到了第五行了, 此时 i= n-1 所以可以作为条件 判断是否是第五行。
    1 方法四:
    2 
    3 n = 5 
    4 print('*' * n) # 第一行
    5 for i in range(n-2):
    6     print('*' + ' ' * (n-2) + '*')
    7 print('*' * n)  # 最后一行
     1 方法5:
     2 n = 5
     3 e = -(n//2) # -2
     4 for i in range(e,n+e): # 【-2,2】
     5     if i == e or i == n+e-1:
     6         print('*'*n)
     7     else:
     8         print('*' + ' '*(n-2) + '*')
     9 
    10 *****
    11 *      *
    12 *      *
    13 *      *
    14 *****
    15 
    16 #  用到了对称性解决问题,只不过体现不出来
    为什么要坚持,想一想当初!
  • 相关阅读:
    HTTP协议 学习笔记一
    web发展历史
    Easydarwin加FFMPEG实现HLS流视频点播
    C# Socket异步实现消息发送--附带源码
    C# Activex调用USB摄像头--附带源码
    C# listbox DataSource数据绑定--一年半以前的bug
    ASP.NET MVC WebAPI实现文件批量上传
    ASP.NET MVC使用SignalR统计在线用户人数
    Chart.js Y轴数据以百分比展示
    Java获取字符串信息
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9404346.html
Copyright © 2011-2022 走看看