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

时间:2015-01-05 08:28:49

标签: python loops

我希望在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
.
.
.

4 个答案:

答案 0 :(得分:4)

检查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")

答案 1 :(得分:1)

您可以使用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)

答案 2 :(得分:1)

  1. 我们接受stringnumber,然后从type conversion string int处理exception,如果用户提供错误的输入字符串,请处理String例如0112eweee
  2. 如果我们希望输出为0,并且不想从字符串(开头)中删除string format并使用int方法。
  3. 如果我们想要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." 执行数学运算。
  4. 代码:

    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
    

    输出:

    {{1}}

答案 3 :(得分:0)

下面的代码应该可以解决问题。 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)