冬雪雪冬 发表于 2018-3-24 10:43:33

Python:每日一题 170

本帖最后由 冬雪雪冬 于 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名答对的鱼油。

shigure_takimi 发表于 2018-3-24 10:59:29

#!/usr/bin/python
def mysum(*args):
        total = sum(args)
        s = '+'.join()+'='+str(total)
        s = s.replace('+-','-')
        return s

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

新手·ing 发表于 2018-3-24 11:05:45

本帖最后由 新手·ing 于 2018-3-24 11:18 编辑

def solution(*args):
    return '+'.join().replace('+-', '-')+'='+str(sum(args))

塔利班 发表于 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))
   

溯影 发表于 2018-3-24 11:10:05

def mysum(*params):
        list1 = list(params)
        result = 0

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

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


晓屁屁 发表于 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
      if i ==0 and num>=0:
            list1 += str(num)
      if num <0:
            list1+=str(num)
      elif num>=0:
            list1+= '+'
            list1+=str(num)
    list1+='='
    list1+=str(count)
    return list1

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

ouyunfu 发表于 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(),end=' ')
    print('= %d'%sum)

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

125zl 发表于 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 > 0 and i == 0:
            str2 += str(str1)
            num += str1
      elif int(str1) >= 0:
            str2 += '+' + str(str1)
            num += str1
      elif str1 < 0:
            str2 += str(str1)
            num += str1
      if i == len(str1) - 1:
            str2 += '=' + str(num)
    return(str2)
print(mysum(-7, 12,83, -99, 22, 0, 1))

JessiFly 发表于 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 < 0:
            temp_str += str(params)
      else:
            temp_str += str(params) + '+'
    temp_str += str(params[-1]) + '=' + str(sum)
    return temp_str

天圆突破 发表于 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)))

tsembrace 发表于 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))

wyf345491656 发表于 2018-3-24 14:57:52

本帖最后由 wyf345491656 于 2018-3-25 13:48 编辑

def mysum(*nums):
    num_sum = 0
    str_sum = str(nums)
    for i in range(0, len(nums)):
      if not isinstance(nums, int):
            return ('参数输入错误')
      num_sum += nums
    for i in range(1, len(nums)):
      if nums < 0:
            str_sum += str(nums)
      else:
            str_sum += '+' + str(nums)
    return ('%s = %d' % (str_sum, num_sum))

8306最硬 发表于 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))

dfh93@163.com 发表于 2018-3-24 15:28:26

def mysum(t):
    num_sum=0
    for i in range(len(t)):
      num_sum+=t
    print(num_sum)
    return num_sum

the0503 发表于 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 == ',':
            for m in range(i,l):
                d += b
            lst.append(d)
            i = l+1
      elif l == (c-1):
            for m in range(i,l+1):
                d += b
            lst.append(d)
    return lst

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

for i in lst1:#生成计算表达式,并求和
    if i == '-':
      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)


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

Restar 发表于 2018-3-24 17:17:44

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

阿bang 发表于 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))

冰封雪舞 发表于 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)
      e+=int(k)
      if c==0 and k!='-':
            d+=k         
      elif k=='-':            
            d+=k            
      else:         
            
            d+= '+'
            d+=k            
    bbb=d+'='+str(e)
    return bbb
print(mysum(1,2,3,4,5,-6,-28,-29))

Python小新人 发表于 2018-3-24 20:34:45

def mysum(*num):
    for i in num[:len(num)-1]:
      print(str(i),str('+'),end='')

    print(str(num),str('='),end='')
    print(sum(num))


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

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

victor.xu 发表于 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] 2 3
查看完整版本: Python:每日一题 170