A.Lyapunov 发表于 2020-7-10 21:07:33

使用递归编写一个十进制转换为二进制的函数


请问为什么下面这段程序运行的结果前面有 0b ?(0b1000000)def Dec2bin(x):
   result = ''
   if x:
          result = bin(x//2)
          return result+str(x%2)
   else:
          return result
print(Dec2bin(64))

Hello. 发表于 2020-7-10 21:09:00

代表二进制呀,还有0x,0o等等等等,都是代表不同的进制。

Twilight6 发表于 2020-7-10 21:09:01




0b 、0o、 0x 都是为了和 十 进制区分开来的

0b 表示二进制

0o 表示八进制

0x 表示十六进制



A.Lyapunov 发表于 2020-7-11 10:22:12

Hello. 发表于 2020-7-10 21:09
代表二进制呀,还有0x,0o等等等等,都是代表不同的进制。

知道0b是代表2进制,我问的是哪一行代码会打印“0b”,Python知道你在转化为2进制,默认就会打印吗

A.Lyapunov 发表于 2020-7-11 10:43:01

本帖最后由 Twilight6 于 2020-7-13 09:10 编辑

Hello. 发表于 2020-7-11 10:33
是的

我把引号去掉,程序报错了、

Hello. 发表于 2020-7-13 08:45:57

本帖最后由 Hello. 于 2020-7-13 08:53 编辑

A.Lyapunov 发表于 2020-7-11 10:43
我把引号去掉,程序报错了、

抱歉,没认真审题

我问的是哪一行代码会打印“0b”?

打印肯定是因为最后的 print 函数才打印出结果的,函数调用过程中没有 print 函数 就不会自动打印出结果

而函数调用只是返回了 0b1000000 这个字符串,然后被外面的 print 函数所打印出 0b1000000 否则是不会显示这个字符串的

A.Lyapunov 发表于 2020-7-13 16:08:03

函数调用不是应该只返回一串数字吗,请问为什么会返回“0b”加一串数字?

A.Lyapunov 发表于 2020-7-13 19:28:47

Hello. 发表于 2020-7-13 08:45
抱歉,没认真审题




函数调用不是应该只返回一串数字吗,请问为什么会返回“0b”加一串数字?

A.Lyapunov 发表于 2020-7-13 19:49:35

不好意思,我基础太差,还是没太明白。那个函数不是自己写的、自己定义功能的吗?

A.Lyapunov 发表于 2020-7-13 19:50:29

Hello. 发表于 2020-7-13 19:44
你调用了一个转换成二进制的函数吖

不好意思,我基础太差,还是没太明白。那个函数不是自己写的、自己定义功能的吗?

Hello. 发表于 2020-7-13 19:52:45

A.Lyapunov 发表于 2020-7-13 19:50
不好意思,我基础太差,还是没太明白。那个函数不是自己写的、自己定义功能的吗?

对啊,功能就是转换2进制

A.Lyapunov 发表于 2020-7-13 19:58:31

Hello. 发表于 2020-7-13 19:52
对啊,功能就是转换2进制

好吧,还是有点蒙。只能慢慢学了、谢谢你!

RhettWong 发表于 2020-8-2 18:54:34

bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
所以是在这里,被python识别你想要做二进制的转化

RhettWong 发表于 2020-8-2 18:55:49

RhettWong 发表于 2020-8-2 18:54
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
所以是在这里,被python识别你想要做二进制 ...

bin(x//y),任意x,y都会打印0b开头的字符串

RhettWong 发表于 2020-8-2 18:58:33

话说回来,
>>> bin(64)
'0b1000000'


你定义的这个函数,仿佛没有什么必要?

A.Lyapunov 发表于 2020-8-5 15:50:47

RhettWong 发表于 2020-8-2 18:58
话说回来,




当时只是在用这个例子练习编程
页: [1]
查看完整版本: 使用递归编写一个十进制转换为二进制的函数