簡體   English   中英

為什么我的 Python 代碼給 output 多行?

[英]Why does my Python codes give output with multiple lines?

我是一名 Python 初學者,並通過解決一些 Code Forces 問題開始了我的旅程。

我在嘗試為這個問題編寫 Python 代碼時遇到了一些問題: https://codeforces.com/problemset/problem/339/A

基本上,輸入行包含一個帶有數字和'+'的字符串,例如'3 + 2 + 1',並且代碼必須將字符串按升序轉換為一系列並打印為output,例如output'1 + 2 + 3 '來自'3 + 2 + 1'。

這是我的嘗試:

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])

當我使用自定義測試運行代碼時,它可以工作:將“1 + 2 + 3”作為 output。

但是,當我提交答案時, output 給出為

1
+ 2 + 3

使我的代碼在第一次測試中失敗。

附上圖片來說明我的意思:

在此處輸入圖像描述

怎么了?

我認為readlines()會捕獲一個換行符\n ,當您執行split時,它會“附加”到1上。 您可以使用條帶function 來遠程前導和尾隨空白字符。

問題是readlines()捕獲附加到“1”的空行 (\n)。

考慮這個解決方案,使用“strip”刪除不需要的\n:

intermediate = str((lines)[0]).strip().split('+')

在這種情況下,調試打印會非常有用。 通過打印“中間”,結果是:

['3', '2', '1\n']

你可以很容易地發現你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM