我希望在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
.
.
.
答案 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)
string
为number
,然后从type conversion
string
int
处理exception
,如果用户提供错误的输入字符串,请处理String
例如0112eweee 0
,并且不想从字符串(开头)中删除string format
并使用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
输出:
{{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)