天天看點

python非零傳回_PTA中送出Python3程式的一些套路

0. FAQ

0.1 送出後提示“答案錯誤”或者“格式錯誤”

PTA檢查答案正确與否是通過字元串比對實作的。是以可能有以下幾種原因:

格式錯誤:程式的輸出要與題目中的樣例輸出格式一樣(輸出内容根據運作結果不同而變化),程式輸出的結果多一個空格、少一個空格,都不行。

比如輸出樣例為1 + 2 = 3,你的輸出卻是**1+2=3 **,錯誤原因分析:在+與=兩邊少了相應的空格,在3後面卻多了空格。

在input()中填寫了提示資訊

不要在input中填寫提示資訊!需要擷取輸入的地方隻要input()就可以了。以下代碼是錯誤的,x = input("請輸入"),請改為x = input()

你的答案真的錯了(請仔細對比,包括大小寫、空格等)或者題目錯了(小機率)。

0.2 送出後提示"非零傳回"

代碼有文法錯誤

針對這種問題,請先在IDLE中把程式調試好以後再送出。

代碼中多出不必要的input()

多寫了input(),但卻沒有相應的輸入,就會産生錯誤。比如樣例輸入隻要求輸入1行,但代碼中卻有2個input()。

0.3 其他要注意的

PTA中的Python3無法正确進行中文字元,是以任何時候,送出的代碼中都不要出現中文。

建立題時不要在輸入、輸出檔案包含中文。

1.處理輸出

1.1 直接使用print函數

print('你要輸出的内容')

1.2 使用Python中字元串的format函數,比如:

a = 1.111

b = 2.222

print('{} + {} = {:.2f}'.format(a,b,a+b))

輸出:1.111 + 2.222 = 3.33

注1:這裡的{:.2f}為保留兩位小數。

注2:這裡面的輸出+與=兩旁均有空格。

1.3 換行或者不換行

print函數直接換行,如果想不換行要加上end=""

print("1", end="")

print("2", end="")

print("3")

print("4")

輸出:

123

4

另一種處理方式:

line = "a"

line = line + "b" #也可以line.append("b")

line = line + "\r\n" #加一個回車換行

line = line + "cde" #也可以使用line += "cde"

print(line)

輸出:

ab

cde

2.處理輸入

2.1 擷取字元串并轉化為數值

在python中統一使用line = input()來處理輸入,line為輸入的一行字元串。

如果想要将其轉換為數值類型,可以使用int,float,eval函數,比如:

line = input()

x = int(line) #将line轉化為整數類型

y = float(line) #将line轉化為浮點數類型

z = eval(line) #将line轉化為表達式類型并運算

#也可簡寫為如下形式

x = int(input(line))

2.2 擷取多行資料

有如下輸入樣例:

3

10

5

-10

第一行的3代表下面要輸入3行,每行放一個數,如何擷取每行的值呢

n = int(input()) #從第一行擷取`3`這個字元串然後轉化為整數指派給n

for i in range(n): #循環n次

x = int(input())

print(x+1)

2.3 如何将字元串中以空格或多個空格分割的字元串取出來呢?

使用字元串的split()函數

比如輸入1 22 33 5,如何獲得其中的1 22 33 5這幾個數?例子:

line = input() #使用者輸入"1 22 33 5"

nums = line.split()

print(nums[0],nums[1],nums[2],nums[3])

輸出:

1 22 33 5

注意:

現在nums中存放的元素均是字元串,如果要進行數值計算必須先轉換。

例題:

從控制台讀入兩個數,然後将其相加輸出。

輸入:

1 2

輸出:

3

處理方法1:

nums = input().split() #将一行字元串中以1個或多個空格分隔的元素取出放入清單。

print(int(nums[0])+int(nums[1])) #int将字元轉化為整數

處理方法2:

ls = [int(x) for x in input().split()] #清單推導式

print(sum(ls))

split函數還可以指定分隔符,比如要将1,2,3,4,56中以,分隔的字元串取出來?可以使用如下代碼:

strs = '1,2,3,4,56'.split(",")

print(strs)

2.3 處理不确定行數的輸入

例題:

下面有若幹行(具體幾行不确定),每行代表一個整數。

編寫一個程式,将所有的數相加,然後輸出結果。

輸入:

1

2

3

輸出:

6

處理方法

x = 0

while True:

try:

x += int(input())

except:

break

print(x)

如何在IDLE中測試上述程式?

運作程式以後,在每一行輸入對應的數字,按Ctrl+D結束輸入。

其他

Python3小練習PTA分享碼:

1A831B0E3A855FFE,老師可通過此分享碼在自建題集中将題目導入。

或者直接在題庫中搜尋jmu-python,就可以找到我們建立的python題目。

其他PTA相關文章: