冬雪雪冬 发表于 2018-8-19 19:14:37

Python:每日一题 200

本帖最后由 冬雪雪冬 于 2018-8-23 19:25 编辑

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

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

题目:
写一个函数对一个字符串处理,这个字符串只包含大小写英文字母、数字和其他标点符号,将大写英文字母变成小写,小写的变成大写,将数字变成9减去这个数字的值,例如1变成9,2变成8,其他字符不变。最后将转换的字符串return返回。
题目没有考虑周全,数字应该是9减去这个数字的值,谢谢大家指正。

拉了盏灯 发表于 2018-8-19 19:31:36

本帖最后由 拉了盏灯 于 2018-8-20 08:49 编辑

def fun200(string):
    s = ''
    for i in string:
      if i.islower():
          s += i.upper()
      elif i.isupper():
            s += i.lower()
      elif i.isdigit():
            s += str(9-int(i))
      else:
            s += i

    print(s)

这是一个容易读的方法,但是太长了,于是,,,

def fun200(string):
    string = string.swapcase()
    string = string.translate(string.maketrans('0123456789','9876543210'))
    print(string)


{:10_256:}

def fun200(string):
    print(string.swapcase().translate(string.maketrans('0123456789','9876543210')))

JessiFly 发表于 2018-8-19 19:39:04

本帖最后由 JessiFly 于 2018-8-20 12:34 编辑

def fun200(string):
    strlist = []
    for each in string:
      if each.isupper():
            strlist.append(each.lower())
      elif each.islower():
            strlist.append(each.upper())
      elif each.isdigit():
            strlist.append(str(9-int(each)))
      else:
            strlist.append(each)
    result = ''.join(strlist)
    return result

if __name__ == '__main__':
    print(fun200('Ab12_+.xyz'))
    print(fun200('1230<>?AaBb'))

aB87_+.XYZ
8769<>?aAbB

塔利班 发表于 2018-8-19 19:43:33

本帖最后由 塔利班 于 2018-8-20 09:21 编辑

def fun200(x):
    t=''
    for e in x:
      if e.isdigit():
            e=str(9-int(e))
      if e.isalpha():
            if e.isupper():
                e=e.lower()
            else:
                e=e.upper()
      t+=e
    return t

import re
def fun200(x):
    def fun_200(f):
      e=f.group()
      if e.isdigit():
            return str(9-int(e))
      if e.isalpha():
            if e.isupper():
                e=e.lower()
            else:
                e=e.upper()
      return e
    return re.sub(r'\w',fun_200,x)

塔利班 发表于 2018-8-19 19:51:14

塔利班 发表于 2018-8-19 19:43


话说0该变成啥。。{:10_245:}

凌九霄 发表于 2018-8-19 19:56:51

本帖最后由 凌九霄 于 2018-8-19 20:55 编辑

按楼主的意思0会变成10,怪怪的,所以我还是让它不变算了。
def func200(string):
    return ''.join([ '0' if x == '0' else str(10 - int(x)) if x.isnumeric() else x.swapcase() for x in string ])

Legend丶Hu 发表于 2018-8-19 22:04:15

本帖最后由 Legend丶Hu 于 2018-8-19 22:05 编辑

string = "jh12k33./,sf!@"
def ans():
    temp = ""
    for each in string:
      if each.islower():
            each = each.upper()
      elif each.isupper():
            each = each.lower()
      elif each.isdigit():
            each = 10 - int(each)
      temp += str(each)
    return temp

print(ans())

喂猪专业户 发表于 2018-8-20 07:47:48

s=str(input("input a string:"))
for i in s:
        if i.isalpha():
                result=i.swapcase()
        elif i.isdigit():
                result=str(9-int(i))
        else:
                result=i
        print(result,end='')

久疤K 发表于 2018-8-20 08:30:25

>>> def fun( s ):
        r = ""
        c0 = ord('0')
        c9 = ord('9')
        ca = ord('a')
        cz = ord('z')
        cA = ord('A')
        cZ = ord('Z')
        for c in s:
                tc = ord(c)
                if c0 <= tc <= c9:
                        tc = c9 - tc + c0
                elif ca <= tc <= cz:
                        tc = tc - ca + cA
                elif cA <= tc <= cZ:
                        tc = tc - cA + ca
                r += chr(tc)
        return r

>>> fun( 'ABCqwer1234')
'abcQWER8765'
>>>

祥哥威武 发表于 2018-8-20 09:14:28

def changeStr(str0):
    str0 = str0.swapcase()
    str1 = ""
    for i in str0:
      try:
            i = str(eval("9-" + i))
      except:
            pass
      finally:
            str1 += i
    return str1

天圆突破 发表于 2018-8-20 10:13:01

def change(string):
    if string.isdigit():
      return str(9-int(string))
    elif string.isupper():
      return string.lower()
    elif string.islower():
      return string.upper()
    else:
      return string

def func200(string):
    return ''.join(map(change, string))

if __name__ == '__main__':   
    res = func200("123ASDqwe,()8")
    print(res)

graceasyi 发表于 2018-8-20 10:33:52

本帖最后由 graceasyi 于 2018-8-20 10:43 编辑

方法一:
def fun200(pstr):
    result = ''
    for s in pstr:
      if s.isdigit():
            result += str(9 - int(s))
      elif s.islower():
            result += s.upper()
      elif s.isupper():
            result += s.lower()
      else:
            result += s

    return result


print(fun200("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+{}|:<>?/.,;\][=-`"))
print(fun200("1@2Abc*diieEXP$D453skj'KE98^Bee9"))

结果:
9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+{}|:<>?/.,;\][=-`
8@7aBC*DIIEexp$d546SKJ'ke01^bEE0

方法二:
# 方法二
def fun200_2(pstr):
    intab = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    outtab = "9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    trantab = str.maketrans(intab, outtab)
    return pstr.translate(trantab)


print(fun200_2("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+{}|:<>?/.,;\][=-`"))
print(fun200_2("1@2Abc*diieEXP$D453skj'KE98^Bee9"))

结果:
9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+{}|:<>?/.,;\][=-`
8@7aBC*DIIEexp$d546SKJ'ke01^bEE0

子沙 发表于 2018-8-20 10:51:11

def fun_200(m):
    m=m.swapcase()
    m1=list(m)[:]
    for i in range(len(m1)):
      if m1.isnumeric()==True:
            m1=str(9-int(m1))
    print(''.join(m1))

archlzy 发表于 2018-8-20 11:35:37

string = '阿的江dfyfJKKG 123675430995jhjASDJH交换费'

def fun200(string):
    return ''.join(else x.capitalize() if x.islower() else x.lower() for x in string])

junter1016 发表于 2018-8-20 11:49:26

a = 'asdJKL12738924&*()^%$#'

def change(str1):
    a = []
    c = ''
    for i in str1:
      if i.isnumeric():
            i = str(9-int(i))
            a.append(i)
      else:
            a.append(i.swapcase())

    for i in a:
      c = c + i
      
    return c

b = change(a)

print(b)

787330410 发表于 2018-8-20 13:08:29

def fun200(str1):
    str2=''
    for i in str1:
      if i.islower():
            str2+=i.upper()
      elif i.isupper():
            str2+=i.lower()
      elif i.isdigit():
            str2+=str(9-int(i))
      else:
            str2+=i
    return str2

暗语寒飞 发表于 2018-8-20 13:35:34

str_test = input('请输入一个带有大小写字母和数字的字符串')
str_test = str_test.swapcase()
new_list = []
for st in str_test:
    if st.isdigit():
      new_list.append(str(9 - int(st)))
    else :
      new_list.append(st)
res_str = ''.join(new_list)
print(res_str)

chongchuigu 发表于 2018-8-20 15:28:04

def a200(n):
        n=list(n)
        for i in range(len(n)):
                if n.isalpha():
                        if n.isupper():
                                n=n.lower()
                        elif n.islower():
                                n=n.upper()
                elif n.isdigit():
                        n=str(9-int(n))
        return ''.join(n)

n='I love FishC123!'
print(a200(n))

mongoole 发表于 2018-8-20 16:24:08

本帖最后由 mongoole 于 2018-8-20 16:29 编辑

#coding:utf-8

#写一个函数对一个字符串处理,这个字符串只包含大小写英文字母、数字和其他标点符号
#将大写英文字母变成小写,小写的变成大写,将数字变成9减去这个数字的值,例如1变成9,2变成8,其他字符不变。最后将转换的字符串return返回。
#题目没有考虑周全,数字应该是9减去这个数字的值,谢谢大家指正。

def result(str1):
    str2 = []
    for i in str1:
      if i.isalpha():
            if i.islower():
                str2.append(i.upper())
            else:
                str2.append(i.lower())
      elif i.isdigit():
            num = 9 - int(i)
            str2.append(num)
      else:
            str2.append(i)
    for j in str2:
      print('%s'%j,end='')
# return str2

# str1 = input('Please input your str:')
str1 = '1a!WE23@#'
result(str1)
#print(result(str1))

ErTian 发表于 2018-8-20 17:04:35

def test200(string):
    temp = []
    for i in string:
      if i.islower():
            temp.append(i.upper())
      elif i.isupper():
            temp.append(i.lower())
      elif not i.isalnum():
            temp.append(i)
      else:
            temp.append(str(9-int(i)))
    return ''.join(temp)
页: [1] 2
查看完整版本: Python:每日一题 200