Python——在中间形成两条线和三个星号
我应该要求用户输入一个数字,然后打印出以下形状: 用户输入=1(1个单位高,两条线之间1个单位) 用户输入=2(两个单位高,两个单位之间) 用户输入=3Python——在中间形成两条线和三个星号,python,ascii-art,Python,Ascii Art,我应该要求用户输入一个数字,然后打印出以下形状: 用户输入=1(1个单位高,两条线之间1个单位) 用户输入=2(两个单位高,两个单位之间) 用户输入=3 ********* * * * * * * * * * ********* 等等 现在,我得到一个带有用户输入号码的空心正方形: side = int(input("Choose a number: ")) inner = side - 2 print ('*' * side) for i in range(inner
*********
* * *
* * *
* * *
*********
等等
现在,我得到一个带有用户输入号码的空心正方形:
side = int(input("Choose a number: "))
inner = side - 2
print ('*' * side)
for i in range(inner):
print ('*' + ' ' * inner + '*')
print ('*' * side)
通常,当你想解决ASCII艺术问题时,首先要分析图像。我们在这里看到的是,每个图像:
2*n+3
星号李>
n
行、n
空格、星号、n
空格和星号;及2*n+3
星号的行list
,str
ing,tuple
)乘以一个数字是一个相同类型的序列,它重复给定次数的序列
因此,对于第一行和最后一行,我们只需编写“*”*(2*n+3)
。中间的行可以用<代码> '*'+'*n+'*+''*n+*′/代码>来构造,我们需要重复<代码> n< /代码>倍。因此,我们可以构建一个包含以下内容的行列表:
['*'*(2*n+3)]+['*'+' '*n+'*'+' '*n+'*']*n+['*'*(2*n+3)]
# ^ first ^ middle line ^ last line
然后使用“\n”。join(..)
将这些行连接在一起:
def print_pattern(n):
print('\n'.join(['*'*(2*n+3)]+['*'+' '*n+'*'+' '*n+'*']*n+['*'*(2*n+3)]))
这将产生:
>>> print_pattern(1)
*****
* * *
*****
>>> print_pattern(2)
*******
* * *
* * *
*******
>>> print_pattern(3)
*********
* * *
* * *
* * *
*********
>>> print_pattern(4)
***********
* * *
* * *
* * *
* * *
***********
>>> print_pattern(5)
*************
* * *
* * *
* * *
* * *
* * *
*************
通过使用for
循环,您还可以使其更具前硬脑膜(尽管这通常被认为不太像Pythonic):
def print_pattern(n):
print('*'*(2*n+3))
for _ in range(n):
print('*'+' '*n+'*'+' '*n+'*')
print('*'*(2*n+3))
或在具有用户输入的程序中:
def print_pattern(n):
print('*'*(2*n+3))
for _ in range(n):
print('*'+' '*n+'*'+' '*n+'*')
print('*'*(2*n+3))
n = int(input("Eliga un número: "))
print_pattern(n)
def打印模式(n):
打印('*'*(2*n+3))
对于范围内的u(n):
打印('*'+'''*n+'*'+'''*n+'*'))
打印('*'*(2*n+3))
n=int(输入(“Eliga unúmero:”)
打印图案(n)
通常,当您想解决ASCII艺术问题时,首先要分析图像。我们在这里看到的是,每个图像:
2*n+3
星号李>
n
行、n
空格、星号、n
空格和星号;及2*n+3
星号的行list
,str
ing,tuple
)乘以一个数字是一个相同类型的序列,它重复给定次数的序列
因此,对于第一行和最后一行,我们只需编写“*”*(2*n+3)
。中间的行可以用<代码> '*'+'*n+'*+''*n+*′/代码>来构造,我们需要重复<代码> n< /代码>倍。因此,我们可以构建一个包含以下内容的行列表:
['*'*(2*n+3)]+['*'+' '*n+'*'+' '*n+'*']*n+['*'*(2*n+3)]
# ^ first ^ middle line ^ last line
然后使用“\n”。join(..)
将这些行连接在一起:
def print_pattern(n):
print('\n'.join(['*'*(2*n+3)]+['*'+' '*n+'*'+' '*n+'*']*n+['*'*(2*n+3)]))
这将产生:
>>> print_pattern(1)
*****
* * *
*****
>>> print_pattern(2)
*******
* * *
* * *
*******
>>> print_pattern(3)
*********
* * *
* * *
* * *
*********
>>> print_pattern(4)
***********
* * *
* * *
* * *
* * *
***********
>>> print_pattern(5)
*************
* * *
* * *
* * *
* * *
* * *
*************
通过使用for
循环,您还可以使其更具前硬脑膜(尽管这通常被认为不太像Pythonic):
def print_pattern(n):
print('*'*(2*n+3))
for _ in range(n):
print('*'+' '*n+'*'+' '*n+'*')
print('*'*(2*n+3))
或在具有用户输入的程序中:
def print_pattern(n):
print('*'*(2*n+3))
for _ in range(n):
print('*'+' '*n+'*'+' '*n+'*')
print('*'*(2*n+3))
n = int(input("Eliga un número: "))
print_pattern(n)
def打印模式(n):
打印('*'*(2*n+3))
对于范围内的u(n):
打印('*'+'''*n+'*'+'''*n+'*'))
打印('*'*(2*n+3))
n=int(输入(“Eliga unúmero:”)
打印模式(n)
您的程序需要做两件主要的事情。首先,您需要计算顶部和底部线条的长度。这是3+2*(用户输入的数字),因为将有3个星号和2个间隙,每个间隙的长度与用户输入的数字相同
然后你需要使用循环。首先打印出上面计算出的星号数。然后使用循环打印出星号和空格。您可以使循环的每次迭代打印一行,因此循环仅用于打印正确的行数。然后打印与第一行星号匹配的最后一行 您的程序需要做两件主要的事情。首先,您需要计算顶部和底部线条的长度。这是3+2*(用户输入的数字),因为将有3个星号和2个间隙,每个间隙的长度与用户输入的数字相同
然后你需要使用循环。首先打印出上面计算出的星号数。然后使用循环打印出星号和空格。您可以使循环的每次迭代打印一行,因此循环仅用于打印正确的行数。然后打印与第一行星号匹配的最后一行 这应该适合您:
m = 6
n = 2
for i in range(m*n+(m-n)):
print '*',
print
for c in range(m):
for i in range(m):
print "*",
for b in range(n):
print ' ',
print
for i in range(m*n+(m-n)):
print '*',
print
这应该适合您:
m = 6
n = 2
for i in range(m*n+(m-n)):
print '*',
print
for c in range(m):
for i in range(m):
print "*",
for b in range(n):
print ' ',
print
for i in range(m*n+(m-n)):
print '*',
print
我使用format()来概括
def ascing(n, C, patmid = "*{0: <{gap}}*{0: <{gap}}*\n" ):
mid = (n * patmid).format(' ', gap=n)
print( "{0}\n{1}{0}".format((3+2*n)*C, mid) )
for x in range(1,7):
ascing(x, '*')
print("\n====================\n")
defascing(n,C,patmid=“*{0:我使用format()来概括
def ascing(n, C, patmid = "*{0: <{gap}}*{0: <{gap}}*\n" ):
mid = (n * patmid).format(' ', gap=n)
print( "{0}\n{1}{0}".format((3+2*n)*C, mid) )
for x in range(1,7):
ascing(x, '*')
print("\n====================\n")
def ascing(n、C、patmid=”*{0:您能告诉我们您尝试了什么吗?这是问题的一部分。谢谢您的提问。以及您尝试的输出吗?您能告诉我们您尝试了什么吗?这是问题的一部分。谢谢您的提问。以及您尝试的输出吗?非常感谢!我正在尝试将代码用于for循环,但图像没有显示。您知道我在做什么吗可能做错了?我将“n”设置为用户输入的数字。@IreneCastañeda:你能用你的循环代码更新问题吗?@IreneCastañeda:查看更新的答案。你忘了调用函数。非常感谢!我正试图将代码与for循环一起使用,但图像没有显示。你知道我可能做错了什么吗?我将“n”设置为相等到用户输入号码。@IreneCastañeda:您能用循环码更新问题吗?@IreneCastañeda:请参阅更新的答案。您忘记调用函数了。