猫史档案馆


【Python小作品】十转二进制教程

用户:嗯哼君 渠源嗯哼君 渠源查看:0 回复:20 评论:0 创建时间:2018-10-14T16:07:02


嗯哼,我就系你们滴嗯哼君啦~~~

经过了上次的教程,大家是不是已经想编写程序了呢?

互转教程:https://www.codemao.cn/community/166395

编写要求:会编写异常、函数及基本算法

好了,让我们开始吧!

首先我们创建一个xinput()函数,用于计算转换

这样做的原因是要使用到函数的一个特性,也就是无限循环。

一开始我们创建了一个叫x的变量,用于询问并储存用户想转换成二进制的数:

def xinput():
    x = int(input("要转换为二进制的数为"))

    xinput()

由于我们之后还要进行运算,所以将其改为int。

接着我们为了不让用户捣乱输入非数字而设置ValueError异常,让他在用户捣乱的时候提醒他并重新进行函数:

center_image

然后我们就要想到:若用户输入的是float怎么办呢?所幸ValueError包括了float,所以我们只需将措辞改一下就行了:

你不能输入不是整数的数据

这里我们用print语句来证明实验,等会就要去掉了

然后我们就要进行程序的核心了——转换二进制。

转换二进制我们主要是用的是列表合并,也可以用递加公式,思路如下:

将每一个余数储存到一个列表中,当数为0后就列表合并,即可。

我们先来进行求余数及储存列表这一块,代码如下:

center_image

我们一行一行的来,先看第一行:我们先import了math库,用于下面的math.floor用。

这个一直到else都没变,只不过在input的下面我们新建了一个ys列表,若没有这一步系统会报错。

我们再来while这一行,他的意思是如果(x不等于0)那么重复执行以下的缩进代码,也就是x为0就是我们计算的结束。

接着我们在ys的末尾加了x除以2的余数,也就是求模运算符。

接着我们将x值更新,将他除以2后储存到新的x值中。

因为小数点已经被余数所去掉了,所以我们不需要小数点后面的,于是用了floor(向下取整),得到了一个新的被除数

系统判断他为不为0,若不为0则重复以上循环,若为0就向我们报告

接下来就是最终的报告了,成品代码如下:

center_image

我们先在12行将ys的每一项都变成str而不是int,若没有这一步底下的join就不行。

接着我们在while的外面设置了最终数值——y,将其变为ys列表里的每一项合并起来的二进制数值

最后我们print,整个计算过程OK

现在我们来试验一下:

center_image

一切完美!


回复

上一页1 页 / 共 1下一页
离开的十五分之六老咸鱼离开的十五分之六老咸鱼

最好按顺序加入一个列表然后reverse在输出

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

对头得嘞

在join上一行加一个ys.reverse()就OK了

还有,18行(加上reverse这一行)的global x是声明x为全局变量

Python与源码的区别是源码的函数内变量默认为全局变量,而Python中则不然,所以需要声明一下

点赞0


评论


离开的十五分之六老咸鱼离开的十五分之六老咸鱼

emotion_编程猫_点赞

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

顶!
是没人看得懂还是大家都会呢……

点赞0


评论


QwQ奶茶QwQ奶茶

太简单了

点赞0


评论


QwQ奶茶QwQ奶茶

我用C++做一题:

#include<iostream>
using namespace std;
int main(){
int a,x=0,m=1;
cin>>a;
while(a!=0){
x+=a%2*m;
m*=10;
a/=2;
}
cout<<x;
return 0;
}

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

对不起,这里是Python,不是C
而且,你会的话不代表别人会

点赞0


评论


WepnWepn

emotion_编程猫_点赞

点赞0


评论


机器人包老师机器人包老师

好久不见

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

额,感觉哪都有你老蚂

点赞0


评论


520669已退猫520669已退猫

好厉害

点赞0


评论


520669已退猫520669已退猫

好厉害啊,我想试试用easygui库把这个程序设计漂亮一点

点赞0


评论


嗯哼君 渠源嗯哼君 渠源

GUI?嗯哼君表示一窍不通······

点赞0


评论


官方雷电猴官方雷电猴

center_image

点赞0


评论


欠王迷欠王迷

print(bin(int(input())))

2333

点赞0


评论


zzy2357zzy2357

bin()就行了,没必要那么麻烦!

点赞0


评论


86135clc86135clc

挖坟

点赞0


评论


xwstsrhxwstsrh

弄反了,4的二进制是100,不是001

点赞0


评论


蔡宁进(大家再见)蔡宁进(大家再见)

不是有直接转换二进制的代码吗?

点赞0


评论


xwstsrhxwstsrh

hex()十六进制都有

点赞0


评论