返回列表 发帖
试着写写 python
str='asdfsD1df'
def l2u(str):
ret=''
for c in str:
ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c;
return ret
def u2l(str):
ret=''
for c in str:
ret += chr(ord(c)|0x20) if c.isalpha() else c;
return ret
print (l2u(str))
print (u2l(str))COPY
1

评分人数

TOP

回复 16# CrLf


    解释一下,0xff^0x20
谢谢。

TOP

回复 16# CrLf


    其实是ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c 整行语法我没看懂。

TOP

回复 18# 依山居

python一种类三元表达式
常规语法是这样
if (c.isalpha()): ret += chr(ord(c)&223)
else: ret += c

另几种方式
ret += c.isalpha() and chr(ord(c)&223) or c
ret += [c,chr(ord(c)&223)][c.isalpha()]
2

评分人数

TOP

呃,套用了 c 的算法:
'a' == 0x60
'A' == 0x40
0xff^0x20 == 0b11111011
0x20 == 0b00000100
'a'  & (0xff^0x20) = 'A'
'A'  | 0x20 = 'a'COPY
1

评分人数

TOP

回复 20# CrLf


    我想要在ret += chr(ord(c)|0x20) if c.isalpha() else c;
下面加一行print(ret),怎么加?

TOP

回复 21# 依山居


    啥意思,直接加上不就好了

TOP

回复 22# CrLf


    我加的时候报错了。

TOP

好了。抱歉,可以是我之前没注意到我哪里弄错了。

TOP

返回列表