巧用python“int”函数

在python中,可以利用关键词“int”实现其他数据类型强制转化为整形数据。不过需要注意,在python2中,有长整型,但是在python3中,无论数字多长,都是整形。

int函数原型为:int(x,[base])

其中x的数据类型可以是字符串或者数字,base代表进制,用中括号括起来,意思是可以省略,缺省值默认为10。

int函数的常见用法大致可以分为如下几类:

1.当x为float型或为int型时,即为数字型时

v=int(3.3/1) #在python中的运算符“/”和在C中作用相似,在这里是除法的意思,即3.3/1=3.3
print(v)

输出显示为:3

v=int(2e3)  # 2e3是指2*10^3,此用法在C中没有
print(v)

输出为:2000

v=int(10,16) #这里的10是数字10,16是16进制的意思
print(v)

输出:报错。

提示:int() can‘t convert non-string with explicit base

翻译过来的意思就是当“base”存在时,int()不能转换非字符串类型。

2.当x为字符串时

v=int("123")
print(v)

输出:123

此时输出的123是一百二十三的意思,是整形的123。int()将字符串“123”强制转换成了整形123。需要注意的是,在base省略时,缺省值默认为10的。

在C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字,需要包含头文件stdlib.h,使用方法不如python中简便。

v=int("123",16)
print(v)

输出:291。

字符串“123”,先转为数字123,再按照十进制输出,就是291。这里的123是16进制的123,输出时是10进制,所以实际上是0x123=291。

v=int("GG",16)
print(v)

输出:错误。

提示:invalid literal for int() with base 16: ‘GG‘

在十六进制中,最大的是“f”,而“G”超出了范围。如果把代码中的“16”改为“17”,程序正确,输出288,即十七进制的GG转为十进制是288。

注意:在这里base的范围是2~36!!!

3.x是字符串,且是0x、0b、0引导的十六进制、二进制、八进制等。

a="0x10"
v=int(a, 16)
print(v)

输出:16。

a="0x10"
v=int(a, 17)
print(v)

输出:错误。

提示:ValueError: invalid literal for int() with base 17: ‘0x10‘。

0x并不是十七进制的前导符,并且在十七进制中并无符号“x”。

a="0x10"
v=int(a,35)
print(v)

输出:40460。

虽然0x并不是35进制的前导符,但是35进制中用“x”代表33。

总结:1.当x为数字时,base必须省略。(或者说base赋值以后,x只能代表字符串)

2.当x为字符串时,用print输出,需要将字符串按照base的值转为十进制,最终显示结果一定是十进制。

经典例题:阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?

这个例题在初中或者高中并不算难题,列方程就可以求解。但是如果按照计算机的思路思考,变得十分简单。第一个格子放1粒,第二个放2粒,第三个放4粒,以此类推……这个问题实际上就是将一个二进制数转为十进制输。

如果只有两个格子,一共就需要1+2=3粒米。两个格子就是“11”,“11”转为十进制就是3。

如果只有三个格子,一共就需要1+2+4=7粒米。两个格子就是“111”,“111”转为十进制就是7。

如果只有两个格子,一共就需要1+2+4+8=15粒米。两个格子就是“1111”。“11”转为十进制就是15。

…………

所以,64个格子用二进制表示就是“11……11”,64个1,这个问题就变为了64个1转为10进制是多少了,很简单,2**64-1

用python写就是

v=int(‘1‘*64,2)
print(v)

输出:18446744073709551615

原文地址:https://www.cnblogs.com/lgwdx/p/9571173.html

时间: 2024-09-29 10:31:31

巧用python“int”函数的相关文章

python int函数(24)

一.int函数介绍 int  在python中实际上是一个变量类型,表示整形,但是实际上一样的可以充当函数使用,也是python的一个内置函数,主要作用就是将其他数字类型强制转换为整形!语法如下: int(x) 参数x:可以为整形也可以是浮点数甚至可以是字符串str类型,例如:0,5,6.3,-78,”-10″,”15″,…… 返回值:返回一个整形数字,如果参数是浮点数,默认会去掉浮点数后面的小数; 注意:如果参数是字符串str类型,那么字符串中不能包含数字以外的任何字符,例如:”10.a”,这

python int函数转换浮点型字符串的坑???

python中的int函数可以将数字或字符串转换为整型数字类型,具体功能就不提了 最近发现一个问题,对于字符串'1.1'之类的,int转换的时候会报异常,这是为什么,个人感觉直接转换成1不就行了,干嘛还不能转换了 >>> int('1.1') Traceback (most recent call last):  File "<pyshell#0>", line 1, in <module>    int('1.1')ValueError: i

python 实现int函数

拖了这么久,最终还是战胜了懒惰,打开电脑写了这篇博客,内容也很简单,python实现字符串转整型的int方法 python已经实现了int方法,我们为什么还要再写一遍,直接用不就好了?事实确实如此,但是int函数看似简单,实际上自己来实现还是有一些坑的 1.判断正负 这点很容易忘记 2.python不能字符串减法 python不能像c++一样直接使用s - '0'直接实现个位数的字符串转整型,而是需要转换ascii码,ord(s) - ord('0')来实现转换 3.判断是否超限 这也是手写in

python的函数

一 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定

[python] 之 函数简介

函数是对程序逻辑进行结构化或过程化的一种编程方法,详细的说明请参考<python学习手册>,不能及时详细解释,望见谅!. 一.创建函数 1.1 def语句 def function(args): "documentation" function_body_suite 1.2 声明.定义与参数 声明指定义了函数名和参数(名),未定义函数主体代码块 定义指定义函数主体代码块 参数主要包含位置参数,默认参数,非关键字参数(*args),关键字参数(**kargs),且在创建函数时

python 返回函数

返回函数 Python的函数不但可以返回int.str.list.dict等数据类型,还可以返回函数! 例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写: def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g 仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g.由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以

python之函数用法isinstance()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isinstance() #isinstance() #说明:返回一个布尔值,判断数据类型 ''' isinstance(...) isinstance(object, class-or-type-or-tuple) -> bool object:一个对象 class-or-type-or-tuple:类/基本类型/元组,可以只传一个数据类型,也可以同时传递多个数据类型 bool:返

python 调用函数

Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://docs.python.org/2/library/functions.html#abs 也可以在交互式命令行通过help(abs)查看abs函数的帮助信息. 调用abs函数: >>> abs(100) 100 >>> abs(-20) 20 >>> abs(1

写好Python之函数

写好Python之函数 避免使用可变对象作为参数德默认值 当Python解释器对函数定义时,通过默认参数表达式来判断他们的值.该表达式仅发生一次.调用该函数不会触发其他的参数表达式值.由于计算的值用于所有函数调用序列,使用可变对象作为默认值会发生一些未期待的结果. 可变对象意味值可以直接进行修改.list, dict, set或大部分类实例.我们可以使用调用append来追加list元素. 不可变对象,如其名,意为创建后不可修改,string, int, 和tuple对象都是不可变对象.我们不能