我已经制作了一个使用*。
打印出形状的功能我的代码是
def print_saw(tooth_size, number_of_teeth):
"""Print the saw drawing"""
counter_2 = 0
while counter_2 != number_of_teeth:
counter = 1
while counter != tooth_size+1:
print("*" * counter)
counter = counter + 1
counter_2 = counter_2 + 1
还有更多代码。但这是打印锯的功能。这是用python打印的。
>>> print_saw(4, 3)
*
**
***
****
*
**
***
****
*
**
***
****
但我想让它水平打印。像这样。
>>> print_saw(4, 3)
* * *
** ** **
*** *** ***
************
答案 0 :(得分:1)
不使用格式化的简单方法:
def print_saw(size, number):
for s in range(size):
print(('*' * (s + 1) + ' ' * (size - s - 1)) * number)
给出:
print_saw(5, 3)
* * *
** ** **
*** *** ***
**** **** ****
***************
答案 1 :(得分:0)
您可以使用字符串格式设置每个“牙齿”的宽度,然后将其乘以牙齿数。
def print_saw(tooth_height, num_teeth, tooth_width=None):
if tooth_width is None:
tooth_width = tooth_height # square unless specified
for width in range(1, tooth_height+1):
row = "{{:<{}}}".format(tooth_width).format("*" * width)
print(row * num_teeth)
样本:
In [2]: print_saw(6, 3)
* * *
** ** **
*** *** ***
**** **** ****
***** ***** *****
******************
In [3]: print_saw(4, 6, 5)
* * * * * *
** ** ** ** ** **
*** *** *** *** *** ***
**** **** **** **** **** ****
这可以通过格式化两次,一次做:
>>> tooth_width = 6
>>> row = "{{:{}}}".format(tooth_width)
>>> row
"{:6}"
另一个完成:
>>> width = 3
>>> row = row.format("*" * width)
>>> row = "*** "
True
然后乘以你想要的牙齿数量
>>> num_teeth = 3
>>> row * 3
*** *** ***
答案 2 :(得分:0)
代码如下:“对于每一行,打印所需的牙齿重复,其中包括扩展到牙齿宽度的填充内容。”
def print_saw(size, reps, fill='*'):
for row in range(1, size + 1):
tooth = '{content:{width}}'.format(content=row * fill, width=size)
print(reps * tooth)
具有更多串联和更少字符串乘法的变体:
def print_saw(size, reps, fill='*'):
while len(fill) <= size:
print(reps * '{0:{width}}'.format(fill, width=size))
fill += fill[0]