PTA Python3 常见问题
卑微小白的真实感受:
实践出真知!!!!!
实践出真知!!!!!
实践出真知!!!!!
重要的事情说三遍啦!-_-进入主题,帮你解决小问题喽!
提交后提示“答案错误”或“格式错误”
PTA检查答案正确与否是通过字符串匹配实现的。所以可能有以下几种原因:
1)格式错误:程序的输出要与题目中的样例输出格式一样(输出内容根据运行结果不同而变化),程序输出的结果多一个空格、少一个空格,都不行。
比如输出样例为1 + 2 = 3,你的输出却是1+2=3 ,错误原因分析:在+与=两边少了相应的空格,在3后面却多了空格。
2)在 input() 中填写了提示信息
不要在input中填写提示信息!需要获取输入的地方只要input()就可以了。以下代码是错误的,x = input(“请输入”),请改为**‘x = input()’**
提交后提示"非零返回"
1)代码有语法错误
针对这种问题,请先在IDLE中把程序调试好以后再提交。
2)代码中多出不必要的input()
多写了input(),但却没有相应的输入,就会产生错误。比如样例输入只要求输入1行,但代码中却有2个input()。
还要注意
PTA中的Python3无法正确处理中文字符,所以任何时候,提交的代码中都不要出现中文。
新建题时不要在输入、输出文件包含中文。
做题时会遇到的小问题(我遇到的)
1)调用库
import sqrt
math.sqrt(x)
2)保留小数点后两位
print("{:.2f}".format(3.1415926))
3)输入
x = int(input()) --将输入转化为整型
x = float(input()) --将输入转化为浮点型
x = eval(input()) --将输入转化为表达式类型
4)一行输入多个数据,并用逗号(空格)隔开
--方法一:
a,b,c = map(int,input().split())
a,b,c = map(int,input().split(','))
--方法二:
a,b,c = (int(x) for x in input().split())
a,b,c = (int(x) for x in input().split(','))
--需要说明的是:
我们常用的第一种,简单,但要注意的是,map()里的参数必须是两个,
那当你遇到一行的输入不是同一种数据类型(比如:int)的时候应该怎么做呢?
我是这样解决的,比如说输入的三个数中,你的数据是:a,b为整数,c为浮点数
a,b,c = map(str,input().split())
a = int(a)
b = int(b)
c = float(c)
这样子就可以解决了
5)获取多行数据
第一行表示要输入几组数据,下面的第N+1行输入相应的数据
n = int(input())
for i in range(n): #循环n次
x = int(input())
i += 1 #注意!!注意!!注意!!这里不能用i++ 或i--,Python中是没有这个运算符的,
#如果用,就会报错
6)输出的空格
--对比下列两行代码
--看到差别了吗?第二行的is前面多了一个空格,这将直接影响你的输出结果(PTA很看重啊)
--意味着,像如下代码的输出,a后面会自带一个空格
--第一行输出:a is prime
--第二行输出:a is prime
print(a,"is prime")
print(a," is prime")
7)print输出
print函数直接换行,如果想不换行要加上 end = ""
print("1",end="")
print("2",end="")
print("3")
print("4")
这段代码的输出结果为:
123
4
8)判断回文数
大多数人这样做!!!(我就是大多数人之一)
n = input()
flag = 1
for i in range(len(n)//2):
if n[i] == n[n-i-1]:
i += 1
else:
flag = 0
break
if flag == 0:
print("no")
if flag == 1:
print("yes")
少数人这样做!!!
n = input()
if n == n[::-1]:
print("yes")
else:
print("no")