在 python 循环中生成具有特定数字的数字

Generating numbers in python loop with specific number

我想在 python 中生成时将 arg 1 添加到一系列数字中:

for arg in sys.argv[1]:
    for i in xrange(0,200000):
        print "%s%05d"%(arg, i)

但这不起作用...

我想要argv[1]只是一个数字!

例如:

python script.py 012345
01234500000
01234500001
01234500002
.
.
.

下面的代码应该可以解决问题。 sys.argv[1] 包含字符串值“123456”,您在第一个 for 循环中迭代字符串的不同部分。

def isint(s):
    try: 
        int(s)
        return True
    except ValueError:
        return False

arg = sys.argv[1]
if isint(arg):
    for i in xrange(0,200000):
        print "%s%05d"%(arg, i)

检查 argv 长度是个好习惯。

编辑

我已将解决方案修改为仅允许数字参数但保留前导零。

if len(sys.argv) == 2 and str(sys.argv[1]).isdigit():
    for i in xrange(0,200000):
        print "%s%05d"%(str(sys.argv[1]), i)
elif len(sys.argv) == 2 and not str(sys.argv[1]).isdigit():
    print ("Given argument must be digit!")
else:
    print ("Wrong number of arguments")

您可以使用 try/except 块来确保参数存在并且是有效整数,然后从那里继续...

import sys

try:
    base = int(sys.argv[1])
# Handle where argument is not present or not an integer
# Either exit, set a default value or whatever
except (ValueError, IndexError):
    raise SystemExit('must supply an integer value as first argument')

# Do whatever
N = 20
for num in xrange(N):
    print '{0:05}{1:05}'.format(base, num)
  1. 因为我们接受 string 作为 number 然后执行 type conversionstringint 并处理 exception 如果用户输入错误输入字符串例如0112eweee
  2. 如果我们希望输出为 String 并且不想从字符串(开头)中剥离 0 并使用 string format 方法。
  3. 如果我们想在 int 中输出然后使用数学过程来创建数字。函数 addByMaths() 进行数学运算。

代码:

import sys
def addByMaths(arg):
    arg *= 100000
    print "=========Maths========"
    for i in xrange(0,10):
        print arg+i

def appendByString(arg):
    print "=========String========"
    tmp = arg+"%05d"
    for i in xrange(0,10):
        print tmp%(i)
try:
    arg_o = sys.argv[1]
    arg_i = int(arg_o)
    #- Add according to maths.
    addByMaths(arg_i)
    #- Append by String method 
    appendByString(arg_o)
except:
    print "Invalid input."

输出:

python test.py 01
=========Maths========
100000
100001
100002
100003
100004
100005
100006
100007
100008
100009
=========String========
0100000
0100001
0100002
0100003
0100004
0100005
0100006
0100007
0100008
0100009