[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
试着写写 python
  1. str='asdfsD1df'
  2. def l2u(str):
  3. ret=''
  4. for c in str:
  5. ret += chr(ord(c)&(0xff^0x20)) if c.isalpha() else c;
  6. return ret
  7. def u2l(str):
  8. ret=''
  9. for c in str:
  10. ret += chr(ord(c)|0x20) if c.isalpha() else c;
  11. return ret
  12. print (l2u(str))
  13. print (u2l(str))
复制代码
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 的算法:
  1. 'a' == 0x60
  2. 'A' == 0x40
  3. 0xff^0x20 == 0b11111011
  4. 0x20 == 0b00000100
  5. 'a'  & (0xff^0x20) = 'A'
  6. 'A'  | 0x20 = 'a'
复制代码
1

评分人数

TOP

回复 20# CrLf


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

TOP

回复 21# 依山居


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

TOP

回复 22# CrLf


    我加的时候报错了。

TOP

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

TOP

返回列表