sinat_33718295 2021-06-09 23:26 采纳率: 100%
浏览 29
已采纳

PAT 1001 python实现

PAT 甲级1001 要求输入两个整数,使得两个整数的合按照千分位逗号分割后返回,如:

输入-1000000 9

返回 -999,991

 

我的代码如下:

def split_num(a,b):
    sum1=int(a)+int(b)
    sum4=abs(int(sum1))
    sum2='%d' %sum4
    sum3=''
    h_sum2=len(sum2)%3
    if h_sum2==0:
        h_sum2=3
    i=3
    j=0
    while(i<len(sum2)):
        j=j-3
        sum3=','+sum2[j:]+sum3
        i=i+3
    sum3=sum2[:h_sum2]+sum3
    
    if sum1>0:
        sum3=sum3
    elif sum1==0:
        sum3=0
    else :
        sum3='-'+sum3
    return sum3


if __name__ == "__main__":
    a,b=input().split()
    print(split_num(a,b))
    exit(0)
    

    

PAT给我的评价是部分正确

我想知道是哪里写的不够完善吗。。

  • 写回答

4条回答 默认 最新

  • CSDN专家-kaily 2021-06-10 09:27
    关注

    问题出在

    while(i<len(sum2)):
            j=j-3
            sum3=','+sum2[j:]+sum3
            i=i+3

    你打印一下你的sum3

    我帮你改了一下那个部分,你可以看一眼,其余部分没动

    def split_num(a,b):
        sum1=int(a)+int(b)
        print(sum1)
        sum4=abs(int(sum1))  # 绝对值
        sum2='%d' %sum4
        sum3=''
        h_sum2=len(sum2)%3   # 前面从第几位开始有逗号
        if h_sum2==0:
            h_sum2=3
        print(h_sum2)
        i=3
        j=0
        while(i<len(sum2)):
            j=j-3
            if j == -3:
                sum3 = ','+sum2[j:]+sum3
            else:
                sum3=','+sum2[j:j+3]+sum3
            i=i+3
        sum3=sum2[:h_sum2]+sum3
        
        if sum1>=0:  # 处理符号
            sum3=sum3
        else :
            sum3='-'+sum3
        return sum3
     
     
    if __name__ == "__main__":
        a,b='-1111111 9'.split()  #input().split()
        print(split_num(a,b))
        exit(0)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算