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名答对的鱼油。 #!/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:18 编辑
def solution(*args):
return '+'.join().replace('+-', '-')+'='+str(sum(args)) 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))
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 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)) 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: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)) 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 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))) '''
建立一个函数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-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:31 编辑
def mysum( *n ):
num= ''.join( '{}{}'.format('+' * (i >= 0), i) for i in n )
return'{}={}'.format(num, sum(n)) 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 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)
第二种方式,用户自己输入数字列表,生成计算表达式并给出和 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)) 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: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))
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 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))