在python循环中生成具有特定编号的编号
在python中生成时,我想将在python循环中生成具有特定编号的编号,python,loops,Python,Loops,在python中生成时,我想将arg1添加到一系列数字中: 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]包含字符串值“1234
arg1
添加到一系列数字中:
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)
string
作为number
时,如果用户给出错误的输入字符串(例如0112eweee),则执行类型转换
从string
到int
,并处理异常
字符串
,并且不希望从字符串(开始)中剥离0
,则使用字符串格式
方法int
中输出,那么使用数学过程来创建数字。函数addByMath()
执行数学运算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
如果
argv[1]
只是一个数字,您将如何迭代它。因为在python中,迭代只能在序列上进行。整数不是序列。你的问题不清楚:第一个参数应该是范围的偏移量吗?@Evert请看我的问题被更新了<代码>argv[1]可以以0开头,也可以不以0开头。。。但关键是sys.argv[1]必须是唯一的数字,但您想将其添加到i
,还是想附加到(字符串版本的)i
?您的第一句话是“我想添加…”,但您的代码显示“追加”。原因是如果是前者,您的代码可能会非常不同。@Evert。。。我想追加我的意思是///那么我如何才能得到我想要的输出…我只想要数字..但是当我使用以0
开头的数字时,它不会显示我,因为int类型…如果我使用str。。。所以,如果我说0123dd
为arg 1,它也会为我生成结果…这不是我想要的谢谢你。。。回答得很好,但当我设置0123456。。它不会在结果中打印0
。如果用户字符串值为“012345”
,并且您不想剥离0
,则不要将字符串
值转换为整数
值。就像arg=sys.argv[1]
@Vivek Sable好的..但是你看我可以说0123dd
,脚本工作正常。。。我只想接受这个号码是的,对。很好使用类型转换。如果您接受的是数字串。但最后的代码是打印字符串。它有一个问题。。。当我说0123dd
as sys.argv[1]时,它正在工作。。。但我不想要它@Duncanuse int(sys.argv[1])表示整数否..我只想得到数字您的输入是固定长度的吗?如果是这样,您也可以填充它,打印“%05d%05d”%(int(sys.argv[1]),i)请查看更新的答案,它应该足够了。