到目前为止,这是我发现的:
from random import randint
randint(100000000000000000000, 999999999999999999999)
Run Code Online (Sandbox Code Playgroud)
输出是:
922106555361958347898L
Run Code Online (Sandbox Code Playgroud)
但我不希望L那里..
如果在它的末尾没有"L",我只能将它用作int.
UPDATE
如果目标是简单地得到一个长度为30位的随机数,那么生成两个小数字然后合并它们会更好吗?
之所以有这样的原因,L是因为它太大而无法融入int,所以它是一个long.见数值类型- ,int,,longfloatcomplex在文档获取更多细节.
所以,你为什么这样做,你L怎么摆脱它?
Python有两种不同的方法可以将值转换为字符串表示形式:
例如,对于字符串,str('abc')是abc,虽然repr('abc')是'abc'.
而对于多头str(1L)来说1,repr(1L)就是1L.
当您只在交互式提示符下键入表达式时,它会使用repr.但是当你使用print命令时,它会使用str.所以,如果你想看到没有的价值L,只需print它:
print randint(100000000000000000000, 999999999999999999999)
Run Code Online (Sandbox Code Playgroud)
如果您想(例如,将字符串保存在变量中或将其写入文件),则必须str显式调用.
但如果您只是想将它用作数字,那么您根本不必担心这个问题; 它是一个数,int和long的值可以自由地相互混合(如在Python 2.3左右).
如果您尝试将其存储在MySQL数据库中,那么您使用的任何MySQL接口都不关心您是否给它int赋值,或者long只要它们符合列类型.**
或者你可以升级到Python 3.x,那里没有单独的long类型(所有整数都是int,无论多大),没有L后缀.
*确切的截止点没有在任何地方记录,但至少对于CPython来说,它适合long你平台上的C.因此,在大多数64位平台上,最大值为(1 << 63)-1; 在其他64位平台和所有32位平台上,它是(1 << 31)-1.您可以通过打印在自己的平台上看到自己sys.maxint.无论如何,你的数字需要70位,所以除非有人将Python 2.x移植到具有128位C long的平台,否则它将不适合.
**请注意,您的值太大,甚至无法适应MySQL BIGINT,因此您将使用其中任何一个DECIMAL或NUMERIC.根据您正在使用的界面以及您的设置方式,您可能需要手动转换为字符串和从字符串转换.但你可以用str和int函数做到这一点,而不用担心哪些值适合int类型,哪些不适合.)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |