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相关文章:
PTA中提交Python3程序的一些套路的更多相关文章
- PTA中提交Java程序的一些套路
201708新版改版说明 PTA与2017年8月已升级成新版,域名改为https://pintia.cn/,官方建议使用Firefox与Chrome浏览器. 旧版 PTA 用户首次在新版系统登录时,请 ...
- PTA中如何出Java题目?
PTA中如何出Java题目? 很多第一次出题的老师,不知道Java在PTA中是如何处理输入的.写一篇文章供大家参考.比如以下这样的一个题目: 从控制台读入两个数,然后将其相加输出. 对于该题可以有如下 ...
- PTA中如何出Java编程题?
很多第一次出Java编程题的老师,不知道Java在PTA中是如何处理输入的.写一篇文章供大家参考. 有多种类型输入的编程题: 类型1:固定数量输入 从控制台读入**两个**数,然后将其相加输出. 对于 ...
- YARN 中的应用程序提交
YARN 中的应用程序提交 本节讨论在应用程序提交到 YARN 集群时,ResourceManager.ApplicationMaster.NodeManagers 和容器如何相互交互.下图显示了一个 ...
- Windows下Eclipse提交MR程序到HadoopCluster
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 欢迎转载,转载请注明出处. 以前Eclipse上写好的MapReduce项目经常是打好包上传到Hadoop测试集 ...
- 【原】spark-submit提交应用程序的内部流程
我们经常通过spark-submit来提交spark应用程序,那么让我们一起看一下这里面到底发生了什么吧. 知识点: 1.CLI命令行界面启动Spark应用程序 Unix有两种方式:1)spark-s ...
- 4 weekend110的textinputformat对切片规划的源码分析 + 倒排索引的mr实现 + 多个job在同一个main方法中提交
好的,现在,来weekend110的textinputformat对切片规划的源码分析, Inputformat默认是textinputformat,一通百通. 这就是今天,weekend110的te ...
- ASP.NET Core中实现单体程序的事件发布/订阅
标题:ASP.NET Core中实现单体程序的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10468058.html 项目源代码: ...
- docker~在centos容器中安装新程序
上一篇我们使用了阿里加速器安装了centos镜像,然后创建了一个新容器,运行了这个镜像,这一讲我们来为这个镜像添加一些应用程序,然后再保存容器,push容器到仓储,大家就可以直接pull我生产的容器了 ...
随机推荐
- Spring Cloud学习笔记-005
服务消费者 之前已经搭建好了微服务中的核心组件——服务注册中心(包括单节点模式和高可用模式).也有了服务提供者,接下来搭建一个服务消费者,它主要完成两个目标,发现服务以及消费服务.其中,服务发现的任务 ...
- 项目版本与分支管理之阿里AoneFlow模式分析
前言 在我前期的项目管理的经验中,一个项目需要维护多个产品及多个版本,这给版本与分支的管理增加了难度.前期没有重视,使得分支太多太乱,版本也没记录好,引发了很多的问题.在多种分支与版本的管理模式下,最 ...
- 同主机下Docker+nginx+tomcat负载均衡集群搭建
想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...
- 大数据处理架构hadoop
Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构.它是基于java语言开发的,具有很好的跨平台特性,其核心是分布式文件系 ...
- MyBatis 框架系列之基础初始
1.什么是 MyBatis MyBatis 本是 apache 的一个开源项目 iBatis,后改名为 MyBatis,它 是一个优秀的持久层框架,对 jdbc 的操作数据库的过程进行封装,使开发者只 ...
- 使用 Cesium 动态加载 GeoJSON 数据
前言 需求是这样的,我需要在地图中显示 08 年到现在的地震情况,地震都是发生在具体的时间点的,那么问题就来了,如何实现地震情况按照时间动态渲染而不是一次全部加载出来. 一. 方案分析 这里面牵扯到两 ...
- [LeetCode] Contain Virus 包含病毒
A virus is spreading rapidly, and your task is to quarantine the infected area by installing walls. ...
- shell实现脚本监控服务器及web应用
实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦有咩有简单的方式呢shell来监控我们服务器运行状态以及服务器上部署的应用,如果出现异常就会自动发送一个邮件给我们,开始搞起. ...
- chall.tasteless.eu 中的注入题
第一题好像就很难,看了payload,算是涨见识了,感觉有点为了猜而猜. 题目给我们的时候是这样的:http://chall.tasteless.eu/level1/index.php?dir=ASC ...
- TopCoder SRM 566 Div 1 - Problem 1000 FencingPenguins
传送门:https://284914869.github.io/AEoj/566.html 题目简述: 平面上有中心在原点,一个点在(r,0)处的正n边形的n个顶点.平面上还有m个企鹅,每个企鹅有一个 ...