Python 3.x Python3.x-使用字符串打印没有填充的菱形
我试图创建一个函数,diamond(num),其中num是由前/后斜杠和空格组成的“diamond”的大小。 例如 但是,我觉得我的代码太复杂了。有没有更简单的方法Python 3.x Python3.x-使用字符串打印没有填充的菱形,python-3.x,Python 3.x,我试图创建一个函数,diamond(num),其中num是由前/后斜杠和空格组成的“diamond”的大小。 例如 但是,我觉得我的代码太复杂了。有没有更简单的方法 def reverse(value,end): if end %2 != 0: return None MAX = end/2 START = (end/2)-1 turningPoint = (end/2)+1 numbers = {} second = -MAX
def reverse(value,end):
if end %2 != 0:
return None
MAX = end/2
START = (end/2)-1
turningPoint = (end/2)+1
numbers = {}
second = -MAX
for x in range(1,end+1):
if x < turningPoint:
numbers[x] = START-(2*(x-1))
if x >= turningPoint:
numbers[x] = second
return value + numbers[value]
def diamond(length):
output = ''
MAX = length
length *= 2
if length == 0 or length % 2 != 0:
return None
for x in range(1,length+1):
var = int(reverse(x,length))
if x < MAX+1:
output += ' '*var + '/' + ' '*((MAX-var)*2) + '\\' + '\n'
else:
output += ' '*var + '\\' + ' '*((MAX-var)*2) + '/' + '\n'
return print(output)
def反转(值,结束):
如果结束%2!=0:
一无所获
最大值=结束/2
开始=(结束/2)-1
转折点=(结束/2)+1
数字={}
秒=-MAX
对于范围内的x(1,结束+1):
如果x<转折点:
数字[x]=开始-(2*(x-1))
如果x>=转折点:
数字[x]=秒
返回值+数字[值]
def菱形(长度):
输出=“”
最大值=长度
长度*=2
如果长度==0或长度%2!=0:
一无所获
对于范围(1,长度+1)内的x:
var=int(反向(x,长度))
如果x
这将有助于:
def printDiamond(n):
upperHalf = ""
lowerHalf = ""
for row in range(1, n + 1):
outerSpaces = n - row
innerSpaces = 2*row - 2
rowTempl = outerSpaces * " " + "{c1}" + innerSpaces * " " + "{c2}" + "\n"
upperHalf += rowTempl.format(c1='/', c2='\\')
lowerHalf = rowTempl.format(c1='\\', c2='/') + lowerHalf
print(upperHalf + lowerHalf)
printDiamond(1)
printDiamond(2)
printDiamond(5)
printDiamond(7)
输出:
/\
\/
/\
/ \
\ /
\/
/\
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\/
/\
/ \
/ \
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\ /
\ /
\/
我可以推荐以下功能吗
def get_diamond(size):
return '\n'.join([' ' * (size - i - 1) + '/' + ' ' * i + '\\'
for i in range(size)] +
[' ' * (size - i - 1) + '\\' + ' ' * i + '/'
for i in reversed(range(size))])
您可以这样使用它:
for i in range(5):
print(get_diamond(i + 1))
运行代码后,屏幕应如下所示:
/\
\/
/\
/ \
\ /
\/
/\
/ \
/ \
\ /
\ /
\/
/\
/ \
/ \
/ \
\ /
\ /
\ /
\/
/\
/ \
/ \
/ \
/ \
\ /
\ /
\ /
\ /
\/
如果您不介意更复杂的内容,此函数与第一个函数相同:
def get_diamond(s):
return '\n'.join(' ' * (s - w - 1) + a + ' ' * w + z for a, z, r in (
('/', '\\', range(s)), ('\\', '/', reversed(range(s)))) for w in r)
不返回预期结果:/
def get_diamond(s):
return '\n'.join(' ' * (s - w - 1) + a + ' ' * w + z for a, z, r in (
('/', '\\', range(s)), ('\\', '/', reversed(range(s)))) for w in r)