close

最近面試至少看到兩三家的題目出現類似這種輸出三角形,這應該不是多難的問題,只是第一次看到還是要想一下,下面來用Java和Python來呈現一下各個三角形圖形

* 通常三角形的階層大部分都是用方法參數傳進來,看問題要求是什麼,有些題目是要求用print的,有些則是要求都加入在String字串變數裡。

等腰三角形

java (用StringBuilder來輸出)

* java的三種都有在面試看過,真的是蠻常出現

static String getTri2(int n) { 
  StringBuilder res = new StringBuilder();
  for(int i=0;i<n;i++) {
     for(int j=0;j<n-i-1;j++) {
        res.append(" ");
     }
     for(int j=0;j<2*i+1;j++) {
        res.append("*");
     }
     res.append("\n");
  }
  return res.toString();
} 

// n=3    
//  *
// ***
//*****

static String getTri6(int n) {
  StringBuilder res = new StringBuilder();
  for(int i=0;i<n;i++) {
     for(int j=0;j<n-i-1;j++) {
        res.append("  ");
     }
     for(int j=0;j<=4*i;j++) {
        if(j%4==0)
           res.append("*");
        else
           res.append(" ");
     }
        res.append("\n");
  }
  return res.toString();
}  
// n=5
//             *  
//           *   *  
//         *   *   *  
//       *   *   *   *  
//     *   *   *   *   * 


static String getTri(int n) {
    StringBuilder res = new StringBuilder();
    for(int i=0;i<n;i++) {
        for(int j=0;j<n-i-1;j++) {
           res.append("  ");
        }
        if(i==n-1) {
           for(int j=0;j<=4*i;j++) 
              res.append("*");
        }
        else {
           for(int j=0;j<=4*i;j++) {
             if(j%4==0)
               res.append("*");
             else
               res.append(" ");
             }
        }
        res.append("\n");
    }
    return res.toString();
}
// n=5
//             *  
//           *   *  
//         *       *  
//       *           *  
//     *****************

python

#等腰三角形
#解1
n = eval(input())
for i in range(n):
    for a in range(n-i-1):
        print(' ',end='')
    for b in range(2*i+1):    
        print('*',end='')
    print('\n',end='')  

#解2
def pyramid(n):
    for i in range(n+1):
        print(' '*(n-i)+'*'*(2*i-1))
n = eval(input())
pyramid(n)

#輸出 
#  * 
# *** 
#***** 
#-----------------------------------------------
n = eval(input())
for i in range(5):
   print("  "*(n-i),end="")
   print(" *  "*(i+1))
#輸出
#         *  
#       *   *  
#     *   *   *  
#   *   *   *   *  
# *   *   *   *   *  

倒等腰三角形

java

static String getTri7(int n) {
   StringBuilder res = new StringBuilder();
   for(int i=n;i>0;i--) {
      for(int j=0;j<n-i;j++) {
         res.append(" ");
      }
      for(int j=0;j<2*i-1;j++) {
         res.append("*");
      }
      res.append("\n");
  }
  return res.toString();
}
// n=3
//*****
// ***
//  *

python

def reverse_pyramid(n):
    for i in range(n,0,-1):
        print(' '*(n-i)+'*'*(2*i-1))

n = eval(input())
reverse_pyramid(n)

#輸出
#*****
# ***
#  *

直角三角形(直角左下)

java

static String getTri2(int n) {
  StringBuilder res = new StringBuilder();
  for(int i=0;i<n;i++) {
     for(int j=0;j<i+1;j++) {
        res.append("*");
     }
     res.append("\n");
  }
  return res.toString();
}
// n=3
//*
//**
//***

python

#直角三角形(直角左下)
#解1
t = eval(input())
for v in range(t):
    for i in range(v+1):#根據外層行號,透過加1可以剛好等於星數
         print('*',end='')
    print('\n',end='')  

#解2
n = eval(input())
for i in range(n+1):
    print(i*'*')

#輸出
#*
#**
#***
#****  

直角三角形(直角右下)

java

static String getTri4(int n) {
   StringBuilder res = new StringBuilder();
   for(int i=0;i<n;i++) {
      for(int j=0;j<n-i-1;j++) {
          res.append(" ");
      }
      for(int j=0;j<i+1;j++) {
          res.append("*");
      }
      res.append("\n");
   }
   return res.toString();
}
// n=3
//  *
// **
//*** 

 

python

#直角三角形(直角右下)
a = eval(input())
for v in range(a):
    for j in range(a-v-1):
        print(' ',end='')
    for i in range(v+1):#根據外層行號,透過加1可以剛好等於星數
        print('*',end='')
    print('\n',end='')  
#輸出
#   *
#  **
# ***
#****

直角三角形(直角左上)

python

#直角三角形(直角左上)
#解1
b = eval(input())
for v in range(b):
    for i in range(b-v):
          print('*',end='')
    print('\n',end='')        

#解2
n = eval(input())
for i in range(n):
    print((n-i)*'*')

#輸出    
#****
#***
#**
#*    

直角三角形(直角右上)

java

static String getTri3(int n) {
  StringBuilder res = new StringBuilder();
  for(int i=n;i>0;i--) {
     for(int j=0;j<n-i;j++) {
        res.append(" ");
     }
     for(int j=0;j<i;j++) {
        res.append("*");
     }
     res.append("\n");
  }
  return res.toString();
} 

//***
// **
//  *

python

#直角三角形(直角右上)
a = int(input())
for v in range(a):
    for i in range(v):
         print(' ',end='')
    for j in range(a-v) :    
        print('*',end='')
    print('\n',end='')    

#輸出
#****
# ***
#  **
#   *

菱形

python

rows = eval(input())
for i in range(1, rows):
    for b in range(rows - i):
        print(' ',end = '')
    for k in range(i*2-1):
        if k ==0 or k==i*2-2:
            print('*',end = '')
        else:
            print(' ',end = '')
    print()
for i in range(rows):
   for b in range(i):
        print(' ',end = '')
   for k in range((rows-i)*2-1):
        if k ==0 or k==(rows-i)*2-2:
            print('*',end = '')
        else:
            print(' ',end = '')
   print() 
#輸出
#      * 
#    *   * 
#  *       * 
#*           * 
#  *       * 
#    *   * 
#      *

*有更好的方法歡迎留言分享

arrow
arrow

    KV 發表在 痞客邦 留言(2) 人氣()