PTA中提交Python3程序的一些套路


0. FAQ

0.1 提交后提示“答案錯誤”或者“格式錯誤”

PTA檢查答案正確與否是通過字符串匹配實現的。所以可能有以下幾種原因:

  1. 格式錯誤:程序的輸出要與題目中的樣例輸出格式一樣(輸出內容根據運行結果不同而變化),程序輸出的結果多一個空格、少一個空格,都不行。
    比如輸出樣例為1 + 2 = 3,你的輸出卻是**1+2=3 **,錯誤原因分析:在+=兩邊少了相應的空格,在3后面卻多了空格。
  2. input()中填寫了提示信息
    不要在input中填寫提示信息!需要獲取輸入的地方只要input()就可以了。以下代碼是錯誤的,x = input("請輸入"),請改為x = input()
  3. 你的答案真的錯了(請仔細對比,包括大小寫、空格等)或者題目錯了(小概率)。

0.2 提交后提示"非零返回"

  1. 代碼有語法錯誤
    針對這種問題,請先在IDLE中把程序調試好以后再提交。
  2. 代碼中多出不必要的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相關文章:

PTA中提交Java程序的一些套路
PTA分享碼-Java
PTA程序設計類實驗輔助教學平台


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM