鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 170

[复制链接]
发表于 2018-3-26 20:50:02 | 显示全部楼层
#-*- coding:utf-8 -*-

def mysum(*arg):
    sum = ""
    s = 0
    flag = 0
    for i in arg:
        s += i
        if flag == 0:
            sum = str(i)
            flag = 1
            continue
        if i >=0:
            sum += "+"+str(i)
        else:
            sum += str(i)
    sum += '=' + str(s)
    return sum

print(mysum(1,-1,2,3,-4))
print(mysum(-2,1,3,4,5,-3,4))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 21:08:50 | 显示全部楼层
qichq_7 发表于 2018-3-26 20:45
第一个数字是正数时打印会是: +8+12+83-99+22+0+1=27,有点不合题意了哈。

我当时写也知道这个问题,不过了,看得懂就行,我也在借鉴其他鱼油的写法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 21:11:16 | 显示全部楼层
qichq_7 发表于 2018-3-26 20:45
第一个数字是正数时打印会是: +8+12+83-99+22+0+1=27,有点不合题意了哈。

另外我看了下,4楼也有这个问题,要解决的话,用‘+’.join的方法最好也最简洁,你这个代码太复杂了。本来很简单的一个题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 21:21:05 | 显示全部楼层
fan1993423 发表于 2018-3-26 21:11
另外我看了下,4楼也有这个问题,要解决的话,用‘+’.join的方法最好也最简洁,你这个代码太复杂了。本 ...

是啊,是没处理开头的+,不过当时题目也是没没要求正数开头,去掉开头的当然更完美了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 22:12:13 | 显示全部楼层
坑得飞起 发表于 2018-3-24 22:49
def fun(*a):
        s,ss=0,''
        for i in a :

def fun(*a):
        s,ss=0,''
        for i in a :
                s+=i
                if i>=0 :
                        ss+='+'+str(i)
                else :
                        ss+=str(i)
        if ss[0]=='+':
                ss=ss[1:]
        print(ss+'='+str(s))

多谢版主认真指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 23:01:51 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-26 23:03 编辑
塔利班 发表于 2018-3-26 21:21
是啊,是没处理开头的+,不过当时题目也是没没要求正数开头,去掉开头的当然更完美了


看了你的改了下就完美解决第一个数的问题了,把第一个数赋值给初始字符串就行啦~~感觉看你们这些大佬的答案,每一个每日一题都能学到很多~~
def mysum(*nums):
    x = str(nums[0])
    for each in nums[1:]:
        x += '%+d'%each
    return x + '=' + str(eval(x))

print(mysum(-7, 12,83, -99, 22, 0, 1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 23:16:47 | 显示全部楼层
Chase_Kas 发表于 2018-3-26 23:01
看了你的改了下就完美解决第一个数的问题了,把第一个数赋值给初始字符串就行啦~~感觉看你们这些大佬的 ...

恩,挺好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 09:34:48 | 显示全部楼层
本帖最后由 凌九霄 于 2018-3-27 09:37 编辑
def mysum(*nums):
    result = 0
    strnum = ''
    for index, value in enumerate(nums):
        if (index == 0 or value < 0):
            strnum += str(value)
        elif (index > 0):
            strnum += '+' + str(value)

        result += value

    return '{0}={1}'.format(strnum,str(result))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 15:09:41 | 显示全部楼层
本帖最后由 checkily 于 2018-3-27 15:16 编辑
def mysum(*parma):
    result = sum(parma)
    s = '+'.join([str(i) for i in parma]).replace('+-', '-')
    return s+'='+str(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-28 15:40:15 | 显示全部楼层
做这个有鱼币的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-1 16:54:49 | 显示全部楼层
本帖最后由 dfh93@163.com 于 2018-4-1 17:06 编辑

[quote]dfh93@163.com 发表于 2018-3-24 15:28
def mysum(*t):
    num_sum=0
    num_str=''
    for i in range(len(t)):
        num_sum+=t[i]
        if t[i]<0:
            if i==0:
                num_str+=str(t[i])
            else:
                num_str+=str(t[i])
        else:
            if i==0:
                num_str+=str(t[i])
            else:
                num_str+='+'+str(t[i])
    num_str+='='+str(num_sum)
    print(num_str)        
    return num_sum
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-1 21:11:27 | 显示全部楼层
def ys(x):
        if(x>0):
                mstr = "+"+str(x)
        else:
                mstr = str(x)
        return mstr;

def mysum(*num):
        s1 = ''
        num_list = [ys(i) for i in num]
        num_list = s1.join(num_list) + '='+str(sum(num))
        if num_list[0] == '+':
                num_list = num_list[1:]

        return num_list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-6 21:26:00 | 显示全部楼层
def mysum(*arg):
    s = ""
    for i in arg:
        if i >= 0:
            s += "+" + str(i)
        else:
            s += str(i)
    s = s[1:]
    print(s+"="+str(sum(arg)))


mysum(1,2,4,-2,0,4,2,-5,9,21,-16)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 17:10:50 | 显示全部楼层
def mysum(*x):
    sum_x = ''
    for i in x:
        if str(i)[0] == '-':
            sum_x += str(i)
        else:
            sum_x += '+' + str(i)
    return ('%s=%s')%(sum_x,eval(sum_x))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-4 14:19:34 | 显示全部楼层
def mysum(*integer):
    result=str(integer[0])
    for each in integer[1:]:
        if each>=0:
            result+='+'+str(int(each))
        else:
            result+=str(int(each))
    return result+'='+str(sum(integer))
print(mysum(-7,12,83,-99,22,0,1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 14:19:16 | 显示全部楼层
def mysum(*params) :
        numList = []
        for i in params :
                if i >= 0 :
                        numList.append('+')
                        numList.append(str(i))
                else :
                        numList.append(str(i))
        numList.remove(numList[0])
        numList.append('=')
        numList.append(str(sum(params)))
        return ''.join(numList)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 10:27:47 | 显示全部楼层
def mysum(arr):
    s = ''
    for a in arr:
        if a < 0:
            s += str(a)
        else:
            s += '+' + str(a)
    return s + '=' + str(sum(arr))

arr = [-7, 12,83, -99, 22, 0, 1]
print(mysum(arr))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表