用python在PTA上答题遇到的一些问题

笔者在使用python3在PTA上答题时遇到了一些问题,个人感觉此篇转载文章对相关问题描述很细致,特转载以记录、学习。原文链接为:https://www.cnblogs.com/zhrb/p/7837981.html如有侵权,请联系博主删除。本文仅供学习交流,禁止二次转载。

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结束输入。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python项目代码使用过程中,可能会遇到各种各样的问题。为了更好地记录和解决这些问题,我们可以建立一个Python问题汇总索引目录,以便随时查阅和解决。 1. 数据类型问题:比如在处理数据时,遇到了不同数据类型的转换问题,如将字符串转为数字或者将数字转为字符串等。 2. 模块导入问题:在使用第三方模块时,可能会遇到无法导入模块的问题,需要查找原因并解决。 3. 语法错误:在编写代码时,可能会出现各种语法错误,如拼写错误、缩进错误等,需要及时修改以保证代码的正确运行。 4. 性能优化问题:在项目运行过程中,可能会遇到性能瓶颈,需要进行代码优化以提高项目的运行效率。 5. 异常处理问题:在项目运行过程中,可能会遇到各种异常情况,需要进行异常处理以保证程序的稳定性。 6. 接口调用问题:在项目中调用外部接口时,可能会遇到接口参数传递或者返回结果处理的问题,需要及时解决。 7. 单元测试问题:在编写项目代码时,可能会遇到单元测试用例编写或者执行结果验证的问题,需要及时进行检查和修复。 8. 版本兼容性问题:在使用第三方库或者Python版本升级时,可能会出现版本兼容性问题,需要及时调整或者更新相关的代码。 总之,建立Python问题汇总索引目录可以帮助我们更好地管理和解决在项目代码使用过程中遇到的各种问题,提高项目的开发和运行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值