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给我的评价是部分正确

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

问题出在

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)

 

 1111111 9
1,111120,120

错的,你可以多输入几个测试一下

最简单的方法:

def split_num(a,b):
    sum1=int(a)+int(b)
    return format(sum1, ',')
 
if __name__ == "__main__":
    a,b=input().split()
    print(split_num(a,b))

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632