鱼C论坛

 找回密码
 立即注册
查看: 3794|回复: 8

[技术交流] int(x,base=0)

[复制链接]
发表于 2020-4-13 21:25:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 永恒的蓝色梦想 于 2020-4-13 21:26 编辑

今天看文档,偶然发现这么一句:
Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
原来 int 的 base 还可以为 0?

试了试,好像和 base=10 并没有什么区别……
>>> int('78',base=0)
78
>>> int('78',base=10)
78
但所谓一张卫生纸也有它的用途!

经过我不懈的努力钻研(并没有),我发现:
>>> int('078',base=10)
78
>>> int('078',base=0)
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    int('078',base=0)
ValueError: invalid literal for int() with base 0: '078'
也就是说 base=0 的时候字符串不能有前导0!

大概就和 int 常量一样

你,涨知识了嘛?

如果有收获,别忘了评分

                               
登录/注册后可看大图



                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-13 21:56:44 | 显示全部楼层
涨没涨知识我不知道,但是……
沙发是我的啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 21:56:50 | 显示全部楼层
这个改base好像有规律的,是什么呢...
>>> int('078',base = 0)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    int('078',base = 0)
ValueError: invalid literal for int() with base 0: '078'
>>> int('078',base = 100)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    int('078',base = 100)
ValueError: int() base must be >= 2 and <= 36, or 0
>>> int('078',base = 36)
260
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-14 00:01:57 | 显示全部楼层
希望涨姿势了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-25 20:33:10 | 显示全部楼层
Base 0 means to interpret the base from the string as an integer literal.
|  >>> int('0b100', base=0)
|  4

help的解释
可是我看不懂。。有没有人解释一下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 21:29:58 | 显示全部楼层
wuqramy 发表于 2020-4-13 21:56
这个改base好像有规律的,是什么呢...
>>> int("078",base=35)
253
>>> int("078",base=34)
246
>>> int("078",base=33)
239
>>> int("078",base=32)
232
>>> int("078",base=31)
225
>>> int("078",base=30)
218
以最后一个为例~
  int("078,base=30)  中“30”代表的应该是“30进制”,跟二进制、十进制原理相同,也就是0*30的(3-1)次方+7*30的(2-1)次方+8*30的(1-1)次方,即0+210+8=218,其他的数值也同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 21:51:53 | 显示全部楼层
ReinhardV 发表于 2022-2-25 20:33
Base 0 means to interpret the base from the string as an integer literal.
|  >>> int('0b100', base ...

你确定是”     int(‘0b100’,base=0)   “吗......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 21:54:16 | 显示全部楼层
深海漩涡 发表于 2022-7-11 21:51
你确定是”     int(‘0b100’,base=0)   “吗......

嗯......确实是4......所以我也想问这个问题~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 21:59:32 | 显示全部楼层
深海漩涡 发表于 2022-7-11 21:54
嗯......确实是4......所以我也想问这个问题~

网上查的0b100中的”b“是Binary(二进制)意思,所以可能相当于”0100“,因此用二进制就是1*2的(3-1)次方,即1*4=4。不过我是小白,可能会说错,请谨慎听取~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表