美文网首页
和小家伙一起学编程 004 编码

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

作者: 木象 | 来源:发表于2019-01-30 19:06 被阅读0次

编码,简单的说,就是将信息从一种表达方式转换成另一种表达方式。

例如,和小朋友约定,如果连续敲三下然后停一下,就表示是爸爸妈妈在敲门。

例如,当有重要而不希望其他人知晓的信息需要传递时,我们可以把信息加密;而当要节约传递和储存所需的资源时,我们会把信息压缩……

想像一下,不论是视频、图片、声音,还是文本、数字,任何我们用计算机处理的东西,最后都被编码成为只有0和1两种状态的比特(bit),它们在计算机、互联网、手机以及各种数字化硬件中千变万化,川流不息……

当然,我们编程,也可以说是编码,把我们头脑中解决问题的方式表达为某种计算机语言,这样,计算机就可以帮我们解决问题了。

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

这个Scratch程序要比之前的长许多,不过别担心,我们并没有用一般的算法(需要除法、余数)来进行十进制转换二进制,而是主要依靠加减法和进位、借位,其实这只是一个同时显示十进制和二进制的计数器。

首先按图设置变量,勾选变量让它们显示在游戏区域上,双击游戏区域的变量,可以显示为图中的样式。

再画两个角色作为加、减的按钮,画面上部加减按钮之间的2个变量分别是十进制数的十位、个位。

下面一排5个变量各表示二进制数的一位,从左到右依次是:5bit(16)、4bit(8)、3bit(4)、2bit(2)、1bit(0)。

十进制数的每一位,分别表示有多少个、多少十(10)、多少一百(10 x 10)、多少一千(10 x 10 x 10),以此类推,小朋友们已经学过。

同理,二进制数的每一位,分别表示有多少个、多少2(2)、多少4(2 x 2)、多少8(2 x 2 x 2)、多少16(2 x 2 x 2 x 2)……这也就是上面表示二进制数的5位的变量名的意义。

设置变量,以及减1按钮的代码 加1按钮的代码 小机器人的代码1

小机器人的代码2

理解这里的关键就是二进制加法:

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

减法类似。

小机器人的代码3 小机器人的代码4 小机器人的代码5 小机器人的代码6

点击加1、减1按钮,就可以看到对应的十进制和二进制数了。

在Python中,整数可以用不同的进制表示,之间可以自动转换,编辑number.py并运行:

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

不仅数字要编码,计算机中的文字也需要编码,最基本常用的是ASCII码,但它只能表示英文字母和其他有限的字符而无法表示中文等字符,常见的中文编码方案有GB2312、GBK等等,而在网页中我们往往会使用UTF-8编码……

在Python中可以用用chr()、ord()两个函数来查看和转换字符的ASCII编码:

>>> 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!

节点目录

和小家伙一起学编程 000 出发

和小家伙一起学编程 001 条件

和小家伙一起学编程 002 循环

和小家伙一起学编程 003 随机

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

和小家伙一起学编程 005 对象

和小家伙一起学编程 006 函数

和小家伙一起学编程 007 算法

相关文章

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

    编码,简单的说,就是将信息从一种表达方式转换成另一种表达方式。 例如,和小朋友约定,如果连续敲三下然后停一下,就表...

  • 小白学编程之HTML/CSS Day004

    小白学编程之HTML/CSS Day 004 往期回顾 Level 1 HTML小白学编程之HTML/CSS Da...

  • Java初学者快速上手之实战“套路”

    很多初学者刚开始学编程时,上来就只想着编码!编码!!编码!!! 但你知道什么是编程吗? 要知道:编码≠编程 今天就...

  • 和小家伙一起学编程 000 出发

    即便没什么用处,编程也是件有趣的事情。 这些文本的出发点,是想和小儿子一起学习编程,同时,把这些知识、经验或者仅仅...

  • 和小家伙一起学编程 007 算法

    说到编程,就不能不说一个重要概念——算法。 简单的说,算法就是解决某类问题的步骤。 比如说排序,在日常生活中,排序...

  • 和小家伙一起学编程 001 条件

    我们往往需要根据某个条件来做出选择或行动,比如:如果这本书打五折我就买了;我九点半就出发;如果走新路线更近我就走新...

  • 和小家伙一起学编程 006 函数

    数学上的函数,记做: 是伟大的莱布尼茨(G.W.Leibniz)提出的。 在中国,最早由清代数学家李善兰翻译,其著...

  • 和小家伙一起学编程 003 随机

    说到随机,最容易想到的例子之一便是抛硬币。 简单的说,随机是指我们无法预先知道结果。 在牛顿物理学的世界中,不考虑...

  • 和小家伙一起学编程 002 循环

    人类发明制造了许多机器来代替自己做那些重复繁琐的劳动。 在编程中,循环就是做这些重复的工作的。 Scratch 循...

  • 和小家伙一起学编程 005 对象

    学习编程的过程中,渐渐的,我们就会遇到一些更复杂抽象的概念。 比如,面向对象的编程(Object-oriented...

网友评论

      本文标题:和小家伙一起学编程 004 编码

      本文链接:https://www.haomeiwen.com/subject/ihimjqtx.html