用两个变量生成数据

2024-06-13 23:07:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个文件,给定汽车的数量(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

Tags: importrightidtyperandomleftroutefile
1条回答
网友
1楼 · 发布于 2024-06-13 23:07:59

好吧,我明白你的意思了

%i是整数的占位符,同时%j在python中无法识别。这跟我和j没有关系

两次使用%i不是问题


如果我们仔细看看那些不起作用的代码:

print('    <vehicle id="right_%i" type="typeWE" route="right" depart="%j" />' % (
                vehNr, i, j), file=routes)

您试图插入3个值,但只有两个可能的占位符(%i,%j)(请记住%j是不正确的占位符)

相关问题 更多 >