鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

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

[复制链接]
发表于 2018-7-27 15:19:34 | 显示全部楼层
那就是先数减号咯,减号的总数是奇数,那不用说就是简化为-号了,其余情况就是+
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 15:29:51 | 显示全部楼层
def count(s):
    if(s.count('-')%2):
            print('-')
    else:
        print('+')
        
count("--+-+++-+--+")
count("++++++++++++++++++-")

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 15:47:48 | 显示全部楼层
一到周五大脑就不动了,居然没想到简便的方法,唉~

  1. import re
  2. s1="32+++-+--+++----678+++----534"
  3. m = re.findall(r'\d+', s1)
  4. m1 = re.findall(r'[+-]+', s1)

  5. sy = [p.count('-') for p in m1]
  6. result = ''
  7. for i in range(0, len(sy)):
  8.     if sy[i] % 2 == 0:
  9.         result += (m[i] + '+')
  10.     else:
  11.         result += (m[i] + '-')

  12. result += m[-1]
  13. print(s1 + " 相当于:", end='')
  14. print(result)
复制代码


结果:
32+++-+--+++----678+++----534 相当于:32-678+534

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 16:08:09 | 显示全部楼层
  1. def fun191(strs):
  2.     num1 = ''  # 左侧数字
  3.     num2 = ''  # 右侧数字
  4.     fh = ''  # 符号
  5.     #使用find处理处数字,避免数字不只一位

  6.     s1 = strs.find('+')  # 寻找第一次出现+的位置
  7.     s2 = strs.find('-')  # 寻找第一次出现-的位置

  8.     s3 = 0  # 用来存储左侧索引

  9.     if s1 == -1 and s2 == -1:
  10.         print '字符串格式错误'
  11.         return

  12.     if s1 == -1 or s2 == -1:
  13.         if s1 == -1:
  14.             s3 = s2
  15.         if s2 == -1:
  16.             s3 = s1
  17.     else:
  18.         s3 = s2 if s1 > s2 else s1 #选择靠左边的
  19.     num1 = strs[:s3]
  20.     m1 = strs.rfind('+')  # 寻找最后一次出现+的位置
  21.     m2 = strs.rfind('-')  # 寻找最后一次出现-的位置
  22.     m3 = 0

  23.     if m1 == -1 or m2 == -1:
  24.         if m1 == -1:
  25.             m3 = m2
  26.         if m2 == -1:
  27.             m3 = m1
  28.     else:
  29.         m3 = m1 if m1 > m2 else m2

  30.     num2 = strs[m3 + 1:]

  31.     lists = list(strs)
  32.     n = lists.count('-')
  33.     if n % 2 != 0:
  34.         fh = '-'
  35.     else:
  36.         fh = '+'
  37.     str1 = num1 + fh + num2 #结果拼接
  38.     print str1
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 16:20:59 | 显示全部楼层
  1. str = input('输入包含加减号的字符串:')
  2. num = 0
  3. for i in str:
  4.     if i == '-':
  5.         num += 1
  6. if num % 2 == 1:
  7.     print('输出的运算符为:-')
  8. else:
  9.     print('输出的运算符为:+')
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 16:55:40 | 显示全部楼层
  1. >>> 3--2
  2. 5
  3. >>> 3----2
  4. 5
  5. >>> 3------2
  6. 5
  7. >>> print("有奇数个减号的就为'-',其它为'+'")
  8. 有奇数个减号的就为'-',其它为'+'
  9. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 23:43:53 From FishC Mobile | 显示全部楼层
def fun(l):
lt=[]
for i in l:
  lt.append(i)
re=lt.count("-")
if re//2==1:
  return "-"
else :
  return "+"
l=input("")
print(fun(l))

点评

注意缩进  发表于 2018-7-29 20:44

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-28 09:46:31 | 显示全部楼层
学习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-28 15:37:47 | 显示全部楼层
  1. str1=input('请输入有一系列的‘+’或‘—’的式子:')
  2. x=str1.count('-')
  3. y=str1.count('+')
  4. if x%2:
  5.     #减法
  6.     str2 = str1.replace('+', '-')
  7.     list1=str2.split('-'*(x+y))
  8.     print('简化后的式子是:'+list1[0]+'-'+list1[1]+'=',int(list1[0])-int(list1[1]))
  9. else:
  10.     #加法2
  11.     str2=str1.replace('-','+')
  12.     list1 = str2.split('+' * (x + y))
  13.     print('简化后的式子是:' + list1[0] + '+' + list1[1] + '=', int(list1[0]) + int(list1[1]))
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 13:19:25 | 显示全部楼层
  1. m=input('请输入只包含加减号的字符串:')
  2. i=0
  3. for j in str(m):
  4.     if j=='-':
  5.         i=i+1
  6. if i%2==0:
  7.     print('+')
  8. else:
  9.     print('-')
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 20:24:07 | 显示全部楼层
这道题有陷阱,需要考虑优先级,而且不能单纯地看加减号比较多或少。

  1. s = input()
  2. N_p1 = s.count('+')
  3. N_p2 = s.count('++')
  4. N_p3 = s.count('+-')

  5. N_m1 = s.count('-')
  6. N_m2 = s.count('--')
  7. N_m3 = s.count('-+')

  8. sign = (N_p1 - N_p2) - (N_m1 - N_m2) + (min(N_p3, N_m3))

  9. if sign > 0:
  10.     print(s[0] + '+' + s[-1] + '=' + str(int(s[0])+int(s[-1])))
  11. else:
  12.     print(s[0] + '-' + s[-1] + '=' + str(int(s[0])-int(s[-1])))

  13. =========================================
  14. 3+++++++++++++++2
  15. >>3+2=5

  16. 3-------------2
  17. >>3-2=1

  18. 3--+-+++-+--+2
  19. >>3+2=5

  20. 3-----+-+++-+--+2
  21. >>3+2=5

  22. 3+++----2
  23. >>3-2=1
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-30 09:39:29 | 显示全部楼层
def fun191(x):       
        while True:
                s=len(x)
                x=x.replace('--','+').replace('++','+').replace('-+','-').replace('+-','-')
                if len(x)==s:
                        return x
x='3--+-+++-+--+2'
print(fun191(x))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-31 20:53:35 From FishC Mobile | 显示全部楼层
equation=’3-2’
num=[]
sign=[]
for i in equation:
if i==’+’ or ’-’:
sign.append(i)
else:
num.append(i)
自己尝试的代码中的一部分,缩进没有问题,运行后三个字符都在sign里面,怎么回事,判断条件应该怎么修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-1 14:32:03 | 显示全部楼层
import math


#判断减号的个数

def math_num(b):
    x=0
    y=0
    for i in b:
        if (i =="+"):
            x=x+1
        if (i =="-"):
            y=y+1
    return y



def math_sum(b,c):

    if ((c%2)!=0):
        d = int(b[0])-int(b[-1])
    else:
        d = int(b[0])+int(b[-1])
    return d
   

        
if __name__=="__main__":
    a=input("输入算法:")
    b=list(a)
    c = math_num(b)
    print (c)
    sum1 = math_sum(b,c)
    print (sum1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 11:11:44 | 显示全部楼层
  1. def test191(str1):
  2.     print('+' if str1.count('-') % 2 == 0 else '-')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 22:16:43 | 显示全部楼层
  1. def func(s):return '+'if s.count('-')%2==0 else '-'
复制代码
看了别人的,改了一下
  1. def func(s):return '-'if s.count('-')%2 else '+'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 14:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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