我正在尝试生成一个文件,给定汽车的数量(i
)和到达时间(j
),但是我无法使代码正常工作。
例如,如果想要5辆介于0和60之间的车辆[i=5,j=(0,60)],生成如下内容:
<routes>
<vehicle id="left_0" type="typeWE" route="left" depart="8" />
<vehicle id="left_1" type="typeWE" route="left" depart="17" />
<vehicle id="right_2" type="typeWE" route="right" depart="39" />
<vehicle id="up_3" type="typeNS" route="up" depart="50" color="1,0,0"/>
<vehicle id="left_4" type="typeWE" route="left" depart="58" />
<routes>
代码如下:
from __future__ import absolute_import
from __future__ import print_function
import os
import sys
import optparse
import subprocess
import random
def generate_routefile():
random.seed(47)
N = 800 # number of cars
M = 1600 # demand per second from different directions
pWE = 1. / 10
pNS = 1. / 30
with open("800_r.rou.xml", "w") as routes:
print("<routes>", file=routes)
lastVeh = 0
vehNr = 0
for i in range(N):
for j in range(M):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%%j" />' % (
vehNr, i, j), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pEW:
print(' <vehicle id="left_%i" type="typeWE" route="left" depart="%i" />' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pNS:
print(' <vehicle id="down_%i" type="typeNS" route="down" depart="%i" color="1,0,0"/>' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pNS:
print(' <vehicle id="up_%i" type="typeNS" route="up" depart="%i" color="1,0,0"/>' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
print("</routes>", file=routes)
if __name__ == "__main__":
generate_routefile()`
错误是line 36, in generate_routefile
vehNr, i, j), file=routes)
ValueError: unsupported format character 'j' (0x6a) at index 64
我试图为车辆的到达时间(出发)添加一个变量,只有当i
是唯一的变量时,代码才起作用
这是可行的,但使用此代码,我只能定义depart值:
for i in range(N):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%i" />' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
但事实并非如此,但在这里,我将定义车辆数量和出发时间:
for i in range(N):
for j in range(M):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%j" />' % (
vehNr, i, j), file=routes)
vehNr += 1
lastVeh = i
好吧,我明白你的意思了
%i
是整数的占位符,同时%j
在python中无法识别。这跟我和j没有关系两次使用
%i
不是问题如果我们仔细看看那些不起作用的代码:
您试图插入3个值,但只有两个可能的占位符(%i,%j)(请记住%j是不正确的占位符)
相关问题 更多 >
编程相关推荐