为什么我的Python代码提供多行输出?
我是一名Python初学者,通过解决一些代码强制问题开始了我的旅程 在为这个问题编写Python代码时,我遇到了一些问题: 基本上,输入行包含一个带有数字和“+”的字符串,例如“3+2+1”,代码必须按升序将字符串转换为一个序列,并作为输出打印,例如从“3+2+1”输出“1+2+3” 这是我的尝试:为什么我的Python代码提供多行输出?,python,Python,我是一名Python初学者,通过解决一些代码强制问题开始了我的旅程 在为这个问题编写Python代码时,我遇到了一些问题: 基本上,输入行包含一个带有数字和“+”的字符串,例如“3+2+1”,代码必须按升序将字符串转换为一个序列,并作为输出打印,例如从“3+2+1”输出“1+2+3” 这是我的尝试: lines = (sys.stdin.readlines()) answer = '' arranged = [] intermediate = str((lines)[0]).split('+')
lines = (sys.stdin.readlines())
answer = ''
arranged = []
intermediate = str((lines)[0]).split('+')
arranged += [intermediate[0]]
k = 1
i = 0
for k in range(1, len(intermediate)):
while i < len(arranged) and intermediate[k] > arranged[i]:
i += 1
arranged[i:i] = [intermediate[k]]
for item in arranged:
answer += item + '+'
print(answer[:-1])
使我的代码在第一次测试中失败
附上的图片显示了我的意思:
怎么了?我认为
readlines()
捕获了一个新行字符\n
,当您执行拆分时,它“附加”到1
。您可以使用该函数来远程前导和尾随空白字符。我认为readlines()
捕获了一个换行字符\n
,当您执行拆分时,它“附加”到1
。您可以使用该函数来远程前导和尾随空白字符。问题在于readlines()
捕获附加到“1”的空行(\n)
考虑此解决方案,使用“剥离”删除不需要的\n:
intermediate = str((lines)[0]).strip().split('+')
在这种情况下,调试打印将非常有用。
通过打印“中间”,结果是:
['3','2','1\n']
而且您可以很容易地检测到您的问题。问题在于readlines()
捕获了附加到“1”的空行(\n)
考虑此解决方案,使用“剥离”删除不需要的\n:
intermediate = str((lines)[0]).strip().split('+')
在这种情况下,调试打印将非常有用。
通过打印“中间”,结果是:
['3','2','1\n']
您可以很容易地检测到您的问题。readlines
方法返回一个字符串列表(您已经知道了),但这些字符串以\n
结尾,即“换行符”。使用str.split()
方法删除它。readlines
方法返回字符串列表(您已经知道了),但这些字符串以\n
结尾,即“换行符”。使用str.split()
方法摆脱它。