我在格式化下面的字符串时遇到了问题。试图使消息以边框为中心,但很难执行它。下面是我想要的输出,下面是我到目前为止的代码。注意:我需要在最长行的左右列上留一个空格,我需要使用split()函数。
+---------------+
| STOP! |
| DANGER AHEAD |
| Drive Safely! |
+---------------+
def border_sign(note):
letter_count = 0
for i in note:
letter_count += 1
return "+-------+\n| {} |\n+-------+\n".format(note)
border_sign("STOP\nDANGER AHEAD\nDrive safely!")
答案 0 :(得分:2)
将字符串拆分为单独的行,然后将每行居中。记住要么在函数内立即打印每一行,建立一个列表,要么产生每一行而不是在第一行之后返回。您还可以确定并使用计算的宽度而不是静态值。
def border_sign(note):
note = note.splitlines()
m = len(max(note, key=len))
yield ('-'*m).join('++')
for line in note:
yield ("|{:^%d}|" % m).format(line)
yield ('-'*m).join('++')
print(*border_sign("STOP\nDANGER AHEAD\nDrive safely!"), sep='\n')
答案 1 :(得分:1)
要考虑的快速示例,而不是生产就绪代码:
def border_sign(note):
rows = note.splitlines()
mlen = len(max(rows, key=len))
print "+" + "-" * (2+mlen) + "+"
for row in rows:
print ("| {:^"+str(mlen)+"} |").format(row)
print "+" + "-" * (2+mlen) + "+"
答案 2 :(得分:0)
Import('common_env')
#Grab a copy of the top environment (the one sent by the SConstruct file)
common_env = common_env.Clone()
#Because this component is only compiled in win32.
if (common_env['ENV']['CONFIG'] == "win32"):
#Grabs the library name, the name should look like libpath_of_current_component-(debug/opt)
libName = common_env.libName()
progName = 'testWinRTP.exe'
common_env.USE_BOOST()
common_env.USE_ACE()
common_env.USE_LOKI()
common_env.USE_DIRECTSOUND()
#Specific cppflag for this component (appended to the flags sent from Sconstruct)
cppFlags = '-D_AFXDLL'
#Specific linkFlag for this component (appended to the flags sent from SConstruct)
linkFlags = '/SUBSYSTEM:WINDOWS'
#All the libraries the binary needs.
libSuffix = common_env['ENV']['OPTSUFF'] + '.lib'
common_env.Append(CPPFLAGS = cppFlags, LINKFLAGS = linkFlags)
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/tests/winRTP/testwinRTP/' + common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_tests_winRTP_testwinRTP-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/tests/winRTP/CCNSMT/' + common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_tests_winRTP_CCNSMT-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/filter_graph_mgt/' + common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_filter_graph_mgt-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/filter_graph/' + common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_filter_graph-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/filter_graph_drivers/'+ common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_filter_graph_drivers-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/audio_fwk/src/filter_graph_utils/' + common_env['ENV']['CONFIG'] + '/libfwk_audio_fwk_src_filter_graph_utils-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/voice_fwk/utils/src/voice_utils/' + common_env['ENV']['CONFIG'] + '/libfwk_voice_fwk_utils_src_voice_utils-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/voice_fwk/utils/src/config/' + common_env['ENV']['CONFIG'] + '/libfwk_voice_fwk_utils_src_config-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/voice_fwk/utils/src/log_utils/' + common_env['ENV']['CONFIG'] + '/libfwk_voice_fwk_utils_src_log_utils-' + libSuffix))
common_env.Append(LIBS=File('#/build/'+ common_env['ENV']['OPTSUFF'] +'/fwk/voice_fwk/utils/src/vcs_utils/' + common_env['ENV']['CONFIG'] + '/libfwk_voice_fwk_utils_src_vcs_utils-' + libSuffix))
common_env.Append(LIBS='msacm32.lib')
#Sources of the library.
sourcesLib = ['CFilterGraphTest.cpp', 'stdafx.cpp', 'testWinRTPDlg.cpp']
#Creates the library
common_env.Library(libName, sourcesLib)
#Compiles a ressource file needed for the binary
compileRes = common_env.RES('testWinRTP.rc')
#Creates the program, notice that the sources of this program includes the .res generated by the compilation of the .rc file.
sourcesBin = ['testWinRTP.cpp', 'testWinRTP.res']
common_env.Program(progName, sourcesBin)
#Install (copy) the binary in LINK/bin/winX
common_env.installInLink(progName)
def border_sign(x):
splitted = x.splitlines()
M = max(map(len,splitted))
horiz = '+-%s-+' % (M*'-')
patiz = '| {0: ^%d} |' % M
print(horiz,*map(patiz.format,splitted), horiz, sep='\n')
border_sign("STOP\nDANGER AHEAD\nDrive safely!")
是一个函数,然后可以在patiz.format