# 和小家伙一起学编程 004 编码

### Scratch 简单的十进制转二进制演示

``````0 + 0 = 0
0 + 1 = 1
1 + 1 = 0 并进位1
``````

``````dec = int(input("输入十进制数："))
print("十进制数：", dec)
print("转换为二进制：", bin(dec))
print("转换为八进制：", oct(dec))
print("转换为十六进制：", hex(dec))
``````

``````>>> chr(66)
'B'
>>> chr(40)
'('
>>> ord('b')
98
>>> ord('B')
66
``````

### Python 简单的加密解密

encode.py：

``````raw = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = "BUAKOMIZTGFELXVWRYSJNCQDHP"

source = input("输入要加密的句子：").upper()
encoded = ""
for c in source:
if c in raw:
encoded += key[raw.find(c)]
else:
encoded += c
print("加密后的句子：")
print(encoded)
``````

``````输入要加密的句子：I love Python!

T EVCO WHJZVX!
``````

key就是所谓的密钥，先把输入的句子都转换为大写字母，然后把每个字母依次替换成密钥中对应的字母，其他字符保持原样。

Python中可以用[]来取得字符串中的某一部分，而find()函数可以取得字符在字符串中的位置或者索引值，如果没找到会返回-1：

``````>>> s = "This is a string."
>>> s[0]
'T'
>>> s[-1]
'.'
>>> len(s)
17
>>> s[16]
'.'
>>> s[5:8]
'is '
>>> s.find('a')
8
>>> s.find('k')
-1
``````

decode.py：

``````raw = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = "BUAKOMIZTGFELXVWRYSJNCQDHP"

encoded = input("输入要解密的句子：")
source = ""
for c in encoded:
if c in key:
source += raw[key.find(c)]
else:
source += c
print("解密后的句子：")
print(source)
``````

``````输入要解密的句子：T EVCO WHJZVX!

I LOVE PYTHON!
``````