[英]Creating an ascii triangle composed of signs
這個想法是創建一個三角形,用 * 包圍,而三角形的 $ 符號、空格和高度都是用戶輸入的。 例如,高度 = 9、$=5 和空格 = 2,這應該產生以下 output:
*
*$*
*$$$*
*$ $$*
*$$$ $$*
*$$$ $$$$*
*$ $$$$$ $*
*$$$$ $$$$$ *
*****************
我嘗試了幾種不同的方法,例如將 $ 和空格串在一起並按索引打印,或者計算每個打印的次數而不重疊。
但是,我找不到任何有用的東西:(
感謝任何幫助:) 只是 CS 的第一學期
我的代碼:
height = int(input('Enter height: '))
numSigns = int(input('Enter number of $: '))
numSpaces = int(input('Enter number of spaces: '))
signCounter = 0
spaceCounter = 0
sign = '$'
row = (sign*numSigns + ' '* numSpaces)*height
count1 = 0
count2 = 0
x =1
for i in range(height):
for j in range(height - i - 1):
print(" ", end = '')
print('*',end = '')
if i == 0:
print()
p = x
x = x + i - 1
for a in range(p,x):
print(row[a], end = '')
if i != 0:
print('*')
實際 output:
Enter height: 9
Enter number of $: 5
Enter number of spaces: 2
*
**
*$*
*$$*
*$$ *
* $$$*
*$$ $*
*$$$$ *
*$$$$$ *
讓我們看看它的工作原理是什么。 你最終會找到邏輯。
TOTAL_HEIGHT_OF_PATTERN = 4
CURRENT_HEIGHT_STATUS = 2
NUMBER_OF_SPACE_ON_LEFT = TOTAL_HEIGHT_OF_PATTERN - CURRENT_HEIGHT_STATUS = 2
首先是每顆星左邊有多少個空格等於TOTAL_HEIGHT_OF_PATTERN - CURRENT_HEIGHT_STATUS
。 對於給定的示例,讓我們以2nd-line
例:
*
*$*
*$$$*
* $$$*
*$$$$$ *
*$$$$$ $$*
*$$$$$ $ $*
*$$$ $$$$$$*
* *$* *$$$* * $$$* *$$$$$ * *$$$$$ $$* *$$$$$ $ $* *$$$ $$$$$$*
在給定高度有多少空間,對於上述系統,它被發現。
空格:0 表示高度 @ 1、2、3
空格:1 表示高度 @ 4、5、6
空格:2 表示高度 @ 7、8
我們可以看到一個模式,使得在每個高度(CURRENT_HEIGHT_STATUS-1)//3
都找不到空間。
對於NO_OF_DOLLORS
我們可以看到它等於2*(CURRENT_HEIGHT_STATUS-NO_OF_SPACES)-3
最后通過使用shuffling operation
我們可以洗牌dollor and spaces
看看這段代碼:
from random import shuffle height = int(input('Height: ')) doller = int(input('Dollor: ')) spaces = int(input('Spaces: ')) for i in range(1,height+1): no_spaces = (i-1)//3 str_ = ['$' for i in range(2*(i-no_spaces)-3)]+[' ']*no_spaces shuffle(str_) if i == 1: print(' '*(height-i) + '*') elif i:= height and i.= 1: print(' '*(height-i) + '*' + ''.join(str_) + '*') else: print('*'*(2*height-1))
OUTPUT:
Height: 9 Dollor: 2 Spaces: 5 * *$* *$$$* *$$ $* *$$ $$$* *$$$$$$ $* * $$$$$$$* *$$ $$$$$$$ * *****************
讓我們將它們划分為過程代碼,而不是完全使用循環。 邏輯類似於我之前的解決方案。 為了制作特定enclose-string
,我們可以使用make_str function
其邏輯圍繞$
的剩余數量
height = int(input('Height : '))
doller = int(input('Dollor : '))
spaces = int(input('Spaces : '))
def make_str(rem, len_str):
x = 0
s = ''
for _ in range(len_str):
if rem >0:
s += '$'
rem -= 1
else:
s += ' '
x += 1
if x == spaces:
x = 0
rem = 5
return (rem, s)
rem_dollor = doller
for i in range(1,height+1):
num = 2*(i)-3
rem_dollor, str_ = make_str(rem_dollor, num)
if i == 1:
print(' '*(height-i) + '*')
elif i != height and i != 1:
print(' '*(height-i) + '*' + str_ + '*')
else:
print('*'*(2*height-1))
**輸出: **
Height : 9
Dollor : 4
Spaces : 3
*
*$*
*$$$*
* $$*
*$$$ $*
*$$$$ $$*
*$$$ $$$$$*
* $$$$$ $$*
*****************
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.