考虑到汽车数量(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
是唯一变量时起作用。
这有效,但是在此代码中我只能定义出发值:
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
答案 0 :(得分:0)
好的,我明白你的意思了。
%i
是整数的占位符,而%j
在python中无法识别。这与i或j无关。
两次使用%i
没问题。
如果我们仔细查看不起作用的代码:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%j" />' % (
vehNr, i, j), file=routes)
您尝试插入3个值,但是您只有两个潜在的占位符(%i,%j)(请记住,%j是不正确的占位符)。