在 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)
- 因为我们接受
string
作为 number
然后执行 type conversion
从 string
到 int
并处理 exception
如果用户输入错误输入字符串例如0112eweee
- 如果我们希望输出为
String
并且不想从字符串(开头)中剥离 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
我想在 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)
- 因为我们接受
string
作为number
然后执行type conversion
从string
到int
并处理exception
如果用户输入错误输入字符串例如0112eweee - 如果我们希望输出为
String
并且不想从字符串(开头)中剥离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