鱼C论坛

 找回密码
 立即注册
查看: 3674|回复: 36

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

[复制链接]
发表于 2018-7-26 18:15:37 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 冬雪雪冬 于 2018-7-29 17:25 编辑

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

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

题目:
这回来个极简单的题目,特别适合初学者。

在加减运算时如果添加多个加减号,系统会精简变成单个加减号,如
>>> 3+++++++++++++++2
5 #相当于3+2
>>> 3-------------2
1 #相当于3-2
>>> 3--+-+++-+--+2
5 #相当于3+2

给你一个只包含加减号的字符串,得到化简后的'+'或'-'
提示有奇数个减号的就为'-',其它为'+'

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-7-26 18:56:08 | 显示全部楼层
  1. def fun191(x):
  2.     return '-' if x.count('-')%2 else '+'
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 19:11:33 | 显示全部楼层
本帖最后由 solomonxian 于 2018-7-27 00:02 编辑

输入只有加减号?条件放得有点宽了
  1. fun = lambda text: '-' if len(text.replace("+", ""))%2 else '+'
复制代码


差点忘了字符串的统计,速度还稍微快一点
  1. fun2 = lambda text: '-' if text.count('-')%2 else '+'
复制代码


换个思路
  1. fun3 = lambda text: '+' if eval(text.join(['1','1'])) else '-'
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 19:28:32 | 显示全部楼层
  1. >>> def fun(s):
  2.         while True:
  3.                 f = s.count("--") or s.count("++") or s.count("-+") or s.count("+-")
  4.                 if not f:
  5.                         return s
  6.                 s = s.replace("--","+")
  7.                 s = s.replace("++","+")
  8.                 s = s.replace("-+","-")
  9.                 s = s.replace("+-","-")

  10.                
  11. >>> fun("3+++++++++++++++2")
  12. '3+2'
  13. >>> fun("3-------------2")
  14. '3-2'
  15. >>> fun("3--+-+++-+--+2")
  16. '3+2'
  17. >>>
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 19:52:01 | 显示全部楼层
  1. while True:
  2.     str1 = input('输入:')
  3.     if '+' in str1:
  4.         if str1.count('-') % 2:
  5.             print('-')
  6.         else:
  7.             print('+')
  8.     else:
  9.         print('-')


  10. 结果
  11. 输入:--+-+-
  12. +
  13. 输入:-----
  14. -
  15. 输入:---++++++++
  16. -
  17. 输入:----+++
  18. +
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 20:47:20 | 显示全部楼层
def test191(string):
    if string.count('-') % 2 != 0:
        return '-'
    else:
        return '+'

print(test191('+----+++'))

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 21:08:13 | 显示全部楼层
  1. str1 = input("请输入n个加减号:")
  2. if len(str1)%2 == 0:
  3.     str1 = "+"
  4.     print(str1)
  5. else:
  6.     str1 = "-"
  7.     print(str1)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 21:49:25 | 显示全部楼层
  1. def a191(n):
  2.         add=''
  3.         sub=''
  4.         for i in n:
  5.                 if i == '+':
  6.                         add += i
  7.                 elif i == '-':
  8.                         sub += i
  9.         if len(sub)%2 != 0:
  10.                 print('减号有%d个,结果为-' % len(sub))
  11.         else:
  12.                 print('减号有%d个,结果为+' % len(sub))
  13. a191('+++----+++-+-+-+-')
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 23:12:30 | 显示全部楼层
  1. def fun191(str1=''):
  2.     if str1.count('-')%2!=0:
  3.         str1='-'
  4.     else:
  5.         str1='+'
  6.     return str1
  7. print(fun191('+++-----'))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 23:34:39 | 显示全部楼层
本帖最后由 凌九霄 于 2018-7-26 23:46 编辑
  1. A = '+++-+-+--++----+'
  2. print('-' if A.count('-') % 2 else '+')
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-26 23:47:25 | 显示全部楼层
  1. def fun(string):
  2.     tmp = ''
  3.     counter = 0
  4.     flag1 = True
  5.     flag2 = True
  6.     for i in string:
  7.         if i == '-':
  8.             counter += 1
  9.             flag1 = False
  10.         elif i.isdecimal():
  11.             if counter == 0 and flag2:
  12.                 tmp += i
  13.             elif flag1 or not counter % 2:
  14.                 tmp += '+' + i
  15.             else:
  16.                 tmp += '-' + i
  17.         else:
  18.             flag2 = False
  19.     return eval(tmp)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 00:01:44 | 显示全部楼层
  1. def simplify(str):
  2.     if str.count('-')%2 != 0:
  3.         return  '-'
  4.     return '+'
  5. string = input("请输入n个‘+’或‘-’:")
  6. print('简化后:',simplify(string))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 07:37:39 | 显示全部楼层
有偶数个减号的就为'+',其它为'-'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 09:27:04 | 显示全部楼层
  1. def fun191(string):
  2.     if string.count('-') % 2:
  3.         return '-'
  4.     else:
  5.         return '+'
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 09:53:37 | 显示全部楼层
  1. def reduce_plus(str_a):
  2.     str1 = []
  3.     str2 = []
  4.     for i in str_a:
  5.         if i == '-':
  6.             str1.append(i)
  7.         elif i == '+':
  8.             str2.append(i)
  9.     if(len(str1)%2 == 1):
  10.         return('-')
  11.     else:
  12.         return('+')

  13. print(reduce_plus('+-++---+-+-+---'))
  14. print(reduce_plus('+-++---+-+-+----'))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 11:09:04 | 显示全部楼层
  1. def func191(n):
  2.     count = 0
  3.     for i in n:
  4.         if i == '-':
  5.             count += 1
  6.     if count%2 == 1:
  7.         return '-'
  8.     return '+'

  9. if __name__ == '__main__':
  10.     n = '---------------------+'
  11.     print(func191(n))
复制代码

评分

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

查看全部评分

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

使用道具 举报

头像被屏蔽
发表于 2018-7-27 12:10:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 13:28:45 | 显示全部楼层
本帖最后由 Wangzy1025 于 2018-7-27 13:34 编辑
  1. def simple(string):
  2.     return '-' if len([x for x in string if x == '-']) % 2 == 1 or '+' not in string else '+'
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 14:53:33 | 显示全部楼层
  1. temp = input('----->')
  2. if ('+' in temp) and (temp.count('-')%2 == 0):
  3.     print(('%d#相当于'+''.join(temp.split('-')).split('+')[0] +'+'+''.join(temp.split('-')).split('+')[-1])%(
  4.             int(''.join(temp.split('-')).split('+')[0]) + int(''.join(temp.split('-')).split('+')[-1])))
  5. elif ('+' in temp) and (temp.count('-')%2 != 0):
  6.     print(('%d#相当于' + ''.join(temp.split('-')).split('+')[0] + '-' + ''.join(temp.split('-')).split('+')[-1]) % (
  7.                 int(''.join(temp.split('-')).split('+')[0]) - int(''.join(temp.split('-')).split('+')[-1])))
  8. else:
  9.     print(('%d#相当于' + temp.split('-')[0] + '-' + temp.split('-')[-1]) % (
  10.             int(temp.split('-')[0]) - int(temp.split('-')[-1])))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-7-27 15:17:37 | 显示全部楼层
def simple(operate):
    if operate.count('-')%2 == 1:
        return int(operate[0])-int(operate[-1])
    else:
        return int(operate[0])+int(operate[-1])

operate = input()
print(simple(operate))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 07:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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