鱼C论坛

 找回密码
 立即注册
查看: 10015|回复: 65

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

[复制链接]
发表于 2018-3-24 10:43:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-3-26 19:43 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
前面几道题对初学者有点难度,这次来一道简单的,希望更多的鱼油参与。
建立一个函数mysum,参数为不确定个数的正整数、负整数或零,返回一个字符串为各个数字加法的算式和结果,例如:
print(mysum(-7, 12,83, -99, 22, 0, 1))
输出:
-7+12+83-99+22+0+1=12
注意:-99前不要加号,如果实在不会写,也可以先写成+-99

提示,函数的参数数量不确定,可以使用收集参数。

由于本题比较简单,只奖励前33名答对的鱼油。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-24 10:59:29 From FishC Mobile | 显示全部楼层
#!/usr/bin/python
def mysum(*args):
        total = sum(args)
        s = '+'.join([str(i) for i in args])+'='+str(total)
        s = s.replace('+-','-')
        return s

print(mysum(-7, 12,83, -99, 22, 0, 1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 11:05:45 | 显示全部楼层
本帖最后由 新手·ing 于 2018-3-24 11:18 编辑
def solution(*args):
    return '+'.join([str(x) for x in args]).replace('+-', '-')+'='+str(sum(args))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 11:06:53 | 显示全部楼层
def mysum(*args):
    x=''
    for arg in args:
        x+='%+d'%arg
    return x+'='+str(eval(x))
print(mysum(-7, 12,83, -99, 22, 0, 1))
    

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 11:10:05 | 显示全部楼层
def mysum(*params):
        list1 = list(params)
        result = 0

        for i in range(len(list1)-1):
                print(list1[i],end='')
                if list1[i+1] >= 0:
                        print('+',end='')
                result += list1[i]

        temp = list1[len(list1)-1]
        result = result + temp
        print(temp,end='')
        
        print('=',end='')
        return result
if __name__ == '__main__':
        print(mysum(-7, 12,83, -99, 22, 0, 1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 11:45:21 | 显示全部楼层
本帖最后由 晓屁屁 于 2018-3-24 12:41 编辑
def mysum(*num):
    list1=''

    count = 0
    for i in range(len(num)):
        count += num[i]
        if i ==0 and num[i]>=0:
            list1 += str(num[i])
        if num[i] <0:
            list1+=str(num[i])
        elif num[i]>=0:
            list1+= '+'
            list1+=str(num[i])
    list1+='='
    list1+=str(count)
    return list1

print(mysum(-1,0,-1,-2,-2,-3,-4,5,1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 12:22:02 | 显示全部楼层
def mysum(*args):
    list1=[]
    list2=[]
    sum=0
    for arg in args:
        list1.append(arg)
        list2.append('%+-d')
        sum = sum+arg
    a=''.join(list2)
    print(a%tuple([i for i in args]),end=' ')
    print('= %d'%sum)

mysum(-7, 12,83, -99, 22, 0, 1)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 13:03:19 | 显示全部楼层
本帖最后由 125zl 于 2018-3-24 13:04 编辑

def mysum(*str1):
    str2 = ''
    num = 0
    for i in range(len(str1)):
        if str1[i] > 0 and i == 0:
            str2 += str(str1[i])
            num += str1[i]
        elif int(str1[i]) >= 0:
            str2 += '+' + str(str1[i])
            num += str1[i]
        elif str1[i] < 0:
            str2 += str(str1[i])
            num += str1[i]
        if i == len(str1) - 1:
            str2 += '=' + str(num)
    return(str2)
print(mysum(-7, 12,83, -99, 22, 0, 1))

点评

str1 > 0 有问题  发表于 2018-3-26 19:48
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 13:05:01 | 显示全部楼层
def mysum(*params):
    sum = 0
    temp_str = ''
    length = len(params)
    for each in params:
        sum += each
    for i in range(length-1):
        if params[i+1] < 0:
            temp_str += str(params[i])
        else:
            temp_str += str(params[i]) + '+'
    temp_str += str(params[-1]) + '=' + str(sum)
    return temp_str

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 13:31:27 | 显示全部楼层
from functools import reduce
def mysum(*args):
    return reduce(lambda x,y:str(x) +'+' + str(y),list(args)).replace('+-','-') + '=' + str(reduce(lambda x,y:x+y,list(args)))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 13:57:49 | 显示全部楼层
'''
建立一个函数mysum,参数为不确定个数的正整数、负整数或零,
返回一个字符串为各个数字加法的算式和结果,例如:
print(mysum(-7, 12,83, -99, 22, 0, 1))
输出:
-7+12+83-99+22+0+1=12
'''
def mysum(*n):
    showstr=''
    s=0
    for i in n:
        showstr=showstr+str(i)+'+'
        s=s+i
    showstr=showstr.replace('+-','-')
    return showstr[:-1]+'='+str(s)
print(mysum(-7, 12,83, -99, 22, 0, 1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 14:57:52 | 显示全部楼层
本帖最后由 wyf345491656 于 2018-3-25 13:48 编辑
def mysum(*nums):
    num_sum = 0
    str_sum = str(nums[0])
    for i in range(0, len(nums)):
        if not isinstance(nums[i], int):
            return ('参数输入错误')
        num_sum += nums[i]
    for i in range(1, len(nums)):
        if nums[i] < 0:
            str_sum += str(nums[i])
        else:
            str_sum += '+' + str(nums[i])
    return ('%s = %d' % (str_sum, num_sum))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 15:12:30 | 显示全部楼层
本帖最后由 8306最硬 于 2018-3-24 15:31 编辑
def mysum( *n ):
    num= ''.join( '{}{}'.format('+' * (i >= 0), i) for i in n )
    return  '{}={}'.format(num, sum(n))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 15:28:26 | 显示全部楼层
def mysum(t):
    num_sum=0
    for i in range(len(t)):
        num_sum+=t[i]
    print(num_sum)
    return num_sum

点评

要用搜集参数否则无法接收n个参数。还要打印算式。  发表于 2018-3-26 19:51
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-24 16:49:45 | 显示全部楼层
本帖最后由 the0503 于 2018-3-24 17:57 编辑
def mysum(*a):
    lst=[]
    s = 0
    for n in a:
        s += n
        if n>= 0:
            lst.append(str(n))
            lst.append('+')
        else:
            lst.pop()
            lst.append(str(n))
            lst.append('+')

    lst.pop()
    lst.append('=')
    print("".join(lst),end='')
    return s
print(mysum(1,5,-3,0,11,25))

输出:
1+5-3+0+11+25=39
def str2list(b): #字符串转为列表
    c = len(b)
    lst = []
    i = 0
    for l in range(c):
        d=''
        if b[l] == ',':
            for m in range(i,l):
                d += b[m]
            lst.append(d)
            i = l+1
        elif l == (c-1):
            for m in range(i,l+1):
                d += b[m]
            lst.append(d)
    return lst

a=input('输入要进行计算的数列,以逗号隔开:')
lst1 = str2list(a)
lst2 = [] 
s = 0
if lst1[0][0] == '-': #第一个若为负数,避免报错
    lst2 = ['']

for i in lst1:  #生成计算表达式,并求和
    if i[0] == '-':
        lst2.pop()
        lst2.append(i)
        lst2.append('+')
    else:
        lst2.append(i)
        lst2.append('+')
    s += int(i)

lst2.pop()
lst2.append('=')
print(''.join(lst2),end='')
print(s)

第二种方式,用户自己输入数字列表,生成计算表达式并给出和

点评

方法1如果第一个数是负数报错  发表于 2018-3-26 19:55

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 17:17:44 | 显示全部楼层
def mysum(*list1):
    pol = ''     #声明返回的表达式,初始为空
    sum1 = 0     #定义总和,初始为0
    #print(list1)
    for i in range(len(list1)):     #依次判断正负来确定表达式形式
        if list1[i] >= 0 and i != 0:
            pol += '+'+str(list1[i])
            sum1 += list1[i]
        elif list1[i] <0 and i != 0:
            pol += str(list1[i])
            sum1 += list1[i]
        else:      #对第一个参数特殊处理
            pol +=str(list1[i])
            sum1 += list1[i]
    pol += '='+str(sum1)
    return pol      #在最终表达式里加上总和
print(mysum(-1,0,2,5,-9,10))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 17:47:50 | 显示全部楼层
def mysum(*num):
    str1 = ''
    count = 0
    sum = 0
    for i in num:
        count += 1
        if i < 0 and count > 1:
            str1 = str1[:-1] + str(i) + '+'
        else:
            str1 += str(i) + '+'
        sum += i
    return str1[:-1] + '=' + str(sum)


print(mysum(-7, 12, 83, -99, -22, 0, -1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 19:18:58 | 显示全部楼层
本帖最后由 冰封雪舞 于 2018-3-24 19:24 编辑

def mysum(*canshu):
    b=len(canshu)
    d=''
    e=0   
    for c in range(0,b):
        k=str(canshu[c])
        e+=int(k)
        if c==0 and k[0]!='-':
            d+=k           
        elif k[0]=='-':            
            d+=k            
        else:         
            
            d+= '+'
            d+=k            
    bbb=d+'='+str(e)
    return bbb
print(mysum(1,2,3,4,5,-6,-28,-29))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 20:34:45 | 显示全部楼层
def mysum(*num):
    for i in num[:len(num)-1]:
        print(str(i),str('+'),end='')

    print(str(num[len(num)-1]),str('='),end='')
    print(sum(num))


mysum(-7, 12, 83, -99, 22, 0, 1)

-7 +12 +83 +-99 +22 +0 +1 =12

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-3-24 21:42:30 | 显示全部楼层
def mysum(*data):
    s = 0
    st = ''
    for a in data:
        s += a
        if a < 0:
            st += str(a)
        else:
            st = st + '+' + str(a)
    return '%s = %d' % (st, s)
print(mysum(-7, 12,83, -99, 22, 0, 1))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 21:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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