最近面試至少看到兩三家的題目出現類似這種輸出三角形,這應該不是多難的問題,只是第一次看到還是要想一下,下面來用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()
#輸出
# *
# * *
# * *
#* *
# * *
# * *
# *
*有更好的方法歡迎留言分享
