鱼C论坛

 找回密码
 立即注册
查看: 3374|回复: 18

[已解决]Python:每日一题 276

[复制链接]
发表于 2019-11-17 19:58:49 | 显示全部楼层 |阅读模式

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

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

x
今天的题目:


给定三个整数 a、b、c,返回它们的和。如果有两个值相同,它们将不计入总和

难度:★☆☆☆☆

示例 1:

输入:a = 1,b = 2,c = 3
输出:6
示例 2:

输入:a = 3,b = 2,c = 3
输出:2
解释:a 和 c 不计入总和。
示例 2:

输入:a = 3,b = 3,c = 3
输出:0


欢迎大家一起答题!
最佳答案
2019-11-17 20:44:17
再写一个。
  1. def fun(*lst):
  2.     return sum(filter(lambda x:lst.count(x) == 1, lst))
复制代码

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2019-11-17 20:09:54 | 显示全部楼层
本帖最后由 零0℃度 于 2019-11-17 20:32 编辑
  1. def f276(a,b,c):
  2.     if a==b==c:
  3.         return 0
  4.     elif a==b!=c:
  5.         return c
  6.     elif a==c!=b:
  7.         return b
  8.     elif b==c!=a:
  9.         return a
  10.     else:
  11.         return a+b+c
复制代码

最简单的写法就是直接写

  1. def f2761(*a):
  2.     nums=[*a]
  3.     num = {}
  4.     for key in nums:
  5.         num[key] = nums.count(key)
  6.     sum = 0
  7.     for i,j in num.items():
  8.         if j == 1:
  9.             sum += i
  10.     return sum
复制代码

或者这样写  随便输入多少数字都可以

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 20:17:29 | 显示全部楼层
  1. def fun(a, b, c):
  2.     lst = [a, b, c]
  3.     for i in lst[:2]:
  4.         if lst.count(i) == 3:
  5.             return 0
  6.         elif lst.count(i) == 2:
  7.             return sum(lst) - i - i
  8.     return sum(lst)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 20:44:17 | 显示全部楼层    本楼为最佳答案   
再写一个。
  1. def fun(*lst):
  2.     return sum(filter(lambda x:lst.count(x) == 1, lst))
复制代码

评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 21:00:08 | 显示全部楼层
  1. def abc(a):
  2.     return sum([x for x in a if a.count(x)<2 ])
复制代码

评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 21:18:27 | 显示全部楼层
两个版本,
版本一:
  1. def solve(a,b,c):
  2.     nums = [a,b,c]
  3.     items = set(nums)
  4.     return sum([x for x in items if nums.count(x) == 1])
  5. if __name__ == '__main__':
  6.     print('示例1 6 输出:',solve(1,2,3))
  7.     print('示例2 2 输出:',solve(3,2,3))
  8.     print('示例3 0 输出:',solve(3,3,3))
复制代码

版本二:
  1. solve = lambda *nums : sum([x for x in set(nums) if nums.count(x) == 1])
  2. if __name__ == '__main__':
  3.     print('示例1 6 输出:',solve(1,2,3))
  4.     print('示例2 2 输出:',solve(3,2,3))
  5.     print('示例3 0 输出:',solve(3,3,3))
复制代码

要测试哪个,楼主你随意。

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 21:28:12 | 显示全部楼层
本帖最后由 华一仙 于 2019-11-18 19:24 编辑

谢谢“阴阳神万物主”的提示,我更新了一下
  1. def f276_2(a, b, c):
  2.     if a == b == c:
  3.         return 0

  4.     n = a ^ b ^ c
  5.     return n if n in {a,b,c} else a+b+c


  6. """ 下方为原答案 """
  7. def f276(a, b, c):
  8.     if a == b == c:
  9.         return 0

  10.     n = a ^ b ^ c
  11.     return a+b+c if n!=a and n!=b and n!=c else n
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-17 23:24:39 | 显示全部楼层
  1. def fun276(a, b, c):
  2.     if a == b == c :return 0
  3.     d = [a,b,c]
  4.     return sum(d) if len(set(d)) == 3 else sum(set(d)) - (sum(d) - sum(set(d)))
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-18 08:51:51 | 显示全部楼层
  1. def f276(a,b,c):
  2.         if a and b-a and c-a:
  3.                 return a+b+c if b-c else a
  4.         return (b-a or c-a) + a if b-c else 0
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-18 10:25:19 | 显示全部楼层
本帖最后由 cdblsc 于 2019-11-18 10:30 编辑

def sum(*n):
    x=list(set(n))
    s=0
    r=[]
    for i in n:
        if i in x:
            s +=i
            x.pop(x.index(i))
            r.append(i)
        elif i in r:
            s -=i
            r.pop(r.index(i))
    return s

print(sum(1,2,3,2,2,3,3))

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-18 10:33:25 | 显示全部楼层
  1. def fun276(a,b,c):
  2.     return sum([i for i in [a,b,c] if [a,b,c].count(i)==1])
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
zltzlt + 1 + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-18 10:37:46 | 显示全部楼层
  1. def func(a,b,c):
  2.     return sum([i for i in [a,b,c] if [a,b,c].count(i) == 1])
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
zltzlt + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2019-11-18 14:47:14 | 显示全部楼层
def fun1(a,b,c):
    if ((a!=b) and (b!= c)and(a!=c)):
        print(a+b+c)
    elif((a==c)and(c!=b)):
        print(b)
    elif((a==b)and(c!=a)):
        print(c)
    elif((b==c)and(c!=a)):
        print(a)
    else:print(0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 16:13:59 | 显示全部楼层
本帖最后由 angtn 于 2019-11-18 16:16 编辑
  1. def echo(lst):
  2.         return sum([x for x in lst if lst.count(x)==1])
  3. lst=[1,2,3]
  4. print(echo(lst))
复制代码

在用匿名函数写一个
  1. x = lambda lst : sum([x for x in lst if lst.count(x)==1])
  2. x([1,2,3])
复制代码

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

使用道具 举报

发表于 2019-11-18 16:54:12 | 显示全部楼层

感觉,最后的那个判断可以改成:
  1. n not in {a,b,c}
复制代码
不晓得这两个有没有时间上的差别,你觉得呢?

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
华一仙 + 1 + 1 谢谢你的提示,我更新了答案

查看全部评分

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

使用道具 举报

发表于 2019-11-18 21:08:57 | 显示全部楼层
新手入门的只会这样
while 1:
    a =int(input('请输入a = '))
    b =int(input('请输入b = '))
    c =int(input('请输入c = '))
    if a == b:
        print(c)
        print('a和b不计入总和')
    elif b == c:
        print(a)
        print('b和c不计入总和')
    elif c == a:
        print(b)
        print("a和c不计入总和")
    elif a == b == c:
        print('0')
        print('相同值不计入总和')
    else :
        print(a+b+c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 21:09:37 | 显示全部楼层
czx95 发表于 2019-11-18 21:08
新手入门的只会这样
while 1:
    a =int(input('请输入a = '))

还不会你们用的def ....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-19 10:44:34 | 显示全部楼层
  1. def fun(a, b, c):
  2.     return sum([v for v in [a, b, c] if [a, b, c].count(v) == 1])
  3.                

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

使用道具 举报

发表于 2019-11-19 21:44:06 | 显示全部楼层
def fun276(*num):
    sum=0
    list=[]
    for i in num:
        if i not in list:
            sum+=i
        else:
            sum-=i
        list.append(i)
    print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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