zoukankan      html  css  js  c++  java
  • PTA中提交Python3程序的一些套路

    0. FAQ

    while True:
        raw = input()
        if raw == '':
            break
        print(sum(map(int, raw.split())))

    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 + "
    " #加一个回车换行
    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程序设计类实验辅助教学平台

  • 相关阅读:
    selenium浏览器操作以及对象定位
    Selenium简介以及selenium环境搭建
    JMeter测试组件
    JMeter基础:元件的顺序
    Appium
    Appium 设备操作API(根据坐标滑动)
    关于接口测试的总结
    五种方式来消除你对测试文档的仇视
    bs架构与cs架构的区别
    Eclipse的错误: 找不到或无法加载主类 10种解决大法!!!!!
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270693.html
Copyright © 2011-2022 走看看