有一个问题,我试图回答,我有一个问题的最后输出。
问题:
此文件中所有站点的名称为7行。在线路上,地铁车站的名称已按顺序和空间排列。(请注意,站点名称不包含空格字符。)
两站之间的火车旅行时间是我们打算上火车的车站所需的2分钟,离开我们要走的车站需要12分钟。我们需要改变线路的时间也是10分钟。请注意,在两条线交叉的站点上,您可以通过两条线,而不需要等待换行。
莫森不想自己从Digikala买东西,也不想坐地铁去购物。走完路后,他明白了他应该从地铁上的车站出发,然后下车。
我们希望您能编写一个程序,计算Mohsen到达购物场所所需的最短时间。
文件:
Tajrish Gheytariyeh Shahid_Sadr Gholhak Doctor_Shari'ati Mirdamad Shahid_Haghani Shahid_Hemmat Mosalla-ye_Emam_Khomeini Shahid_Beheshti Shahid_Mofatteh Shohada-ye_Haftom-e_Tir Taleghani Darvazeh_Dowlat Sa'di Emam_Khomeini Panzdah-e_Khordad Khayyam Meydan-e_Mohammadiyeh Shoush Payaneh_Jonoub Shahid_Bokharaei Ali_Abad Javanmard-e_Ghassab Shahr-e_Rey Palayeshgah Shahed-Bagher_Shahr Haram-e_Motahhar-e_Emam_Khomeini Kahrizak
Farhangsara Tehranpars Shahid_Bagheri Daneshgah-e_Elm-o_San'at Sarsabz Janbazan Fadak Sabalan Shahid_Madani Emam_Hossein Darvazeh_Shemiran Baharestan Mellat Emam_Khomeini Hasan_Abad Daneshgah-e_Emam_Ali Meydan-e_Hor Shahid_Navab-e_Safavi Shademan Daneshgah-e_Sharif Tarasht Tehran_Sadeghiyeh
Gha'em Shahid_Mahallati Aghdasiyeh Nobonyad Hossein_Abad Meydan-e_Heravi Shahid_Zeynoddin Khajeh_Abdollah-e_Ansari Shahid_sayyad-e_Shirazi Shahid_Ghodousi Sohrevardi Shahid_Beheshti Mirza-ye_Shirazi Meydan-e_Jahad Meydan-e_Hazrat-e_Vali_Asr Teatr-e_Shahr Moniriyeh Mahdiyeh Rahahan Javadiyeh Zamzam Shahrak-e_Shari'ati Abdol_Abad Ne'mat_Abad Azadegan
Shahid_Kolahdouz Nirou_Havaei Nabard Pirouzi Ebn-e_Sina Meydan-e_Shohada Darvazeh_Shemiran Darvazeh_Dowlat Ferdowsi Teatr-e_Shahr Meydan-e_Enghelab-e_Eslami Towhid Shademan Doctor_Habibollah Ostad_Mo'in Meydan-e_Azadi Bimeh Shahrk-e_Ekbatan Eram-e_Sabz
Shahid_Sepahbod_Qasem_Soleimani Golshahr Mohammad_Shahr Karaj Atmosfer Garmdarreh Vardavard Iran_Khodro Chitgar Varzeshgah-e_Azadi Eram-e_Sabz Tehran_Sadeghiyeh
Shahid_Sattari Shahid_Ashrafi_Esfahani Yadegar-e_Emam Marzdaran Shahrak-e_Azmayesh Daneshgah-e_Tarbiat_Modarres Meydan-e_Hazrat-e_Vali_Asr Shohada-ye_Haftom-e_Tir Emam_Hossein Meydan-e_Shohada Amir_Kabir Shahid_Rezaei Be'sat Kiyan_Shahr Dowlat_Abad
Meydan-e_San'at Borj-e_Milad-e_Tehran Boostan-e_Goftegou Daneshgah-e_Tarbiat_Modarres Modafean-e_Salamat Towhid Shahid_Navab-e_Safavi Roudaki Komeyl Beryanak Helal_Ahmar Mahdiyeh Meydan-e_Mohammadiyeh Mowlavi Meydan-e_Ghiyam Chehel_Tan-e_Doulab Ahang Basij以下是我迄今所做的工作:
# tmp = []
results = []
def find_in_list_of_list(mylist, char):
for sub_list in mylist:
if char in sub_list:
return [mylist.index(sub_list), sub_list.index(char)]
raise ValueError("'{char}' is not in list".format(char=char))
with open("metro.txt", "r") as file:
lines = [line.split(" ") for line in file.read().split("\n")]
for i in range(int(input())):
destination = input().split(" ")
for line in lines:
if destination[0] in line and destination[1] in line:
start = line.index(destination[0])
stop = line.index(destination[1])
time = (stop - start) * 2
results.append(17 + 12 + time)
elif destination[0] in line and destination[1] not in line:
start = line.index(destination[0])
stop = len(line)
line1 = lines.index(line)
line2 = find_in_list_of_list(lines, destination[1])
# tmp.append(line2[1])
# tmp.append(stop)
# tmp.append(start)
time = (stop - line2[1])
results.append(17 + 12 + time + 10)
else:
continue
# print(tmp)
for item in results:
print(item)我的输出是错误的:
31
35
43
45
47
46样本输入:
5
Tajrish Gheytariyeh
Tajrish Gholhak
Tarasht Eram-e_Sabz
Aghdasiyeh Sohrevardi
Towhid Baharestan样本输出:
31
35
43
45
51描述:
第一次从"Tajrish“到”Qaytaria“的旅行:
在塔杰里什车站进站和上火车需要17分钟。从一号线的“塔伊里什”站到达卡塔里亚需要2分钟,从“盖亚提耶”站出来需要12分钟。因此,这次旅行的总时间等于: 17 +2+ 12 = 31。
第二次从"Tajrish“到”Gholhak“的旅行:
在塔杰里什车站进站和上火车需要17分钟。从1号线的"Tajrish“站到"Ghalhak”站需要6分钟,离开"Ghalhak“站需要12分钟。因此,这次旅行的总时间等于: 17 +6+ 12 = 35。
从"Tarsh“到"Eram Sabz”的第三次旅行:
在"Tarsh“车站进站和上火车需要17分钟。从2号线的"Taresh“站到”德黑兰(Sadeghie)“站需要2分钟,在”德黑兰(Sadegh)“站,从2号线转到5号线需要10分钟。从第5线的“德黑兰(Sadeghie)”站到"Eram Sabz“站需要2分钟,离开"Eram Sabz”站需要12分钟。因此,这次旅行的总时间等于: 17 +2+ 10 +2+ 12 = 43。
从"Aghdiseh“到”Sohrvardi“的第四次旅行:
在"Aqdasiyeh“车站进站和上车需要17分钟。从3号线的"Aqdasiyeh“站到达"Sohrvardi”站需要16分钟,从"Sohrvardi“站出来需要12分钟。因此,这次旅行的总时间等于: 17 + 16 + 12 = 45。
从"Tawheed“到”Baharistan“的第五次旅行:
在"Tawheed“车站进站和上火车需要17分钟。从4号线的"Tawheed“站到"Darvaze Shemiran”站需要10分钟,在"Darvaze Shemiran“站从第4线转到第2线需要10分钟。从第5线的"Darvaze Shemiran“站到达"Baharistan”站需要2分钟,离开"Baharistan“站需要12分钟。因此,这次旅行的总时间等于: 17 + 10 + 10 +2+ 12 = 51。
发布于 2022-07-15 11:18:19
我找不到您代码中的错误所在,但是我认为重写代码可能会有所帮助。
results = []
with open("metro.txt", "r") as file:
lines = [line.split(" ") for line in file.read().split("\n")]
for i in range(int(input())):
destination = input().split(" ")
for index, line in enumerate(lines):
if destination[0] in line:
# start is a tuple - (index of line in lines, index of station in line)
start = (index, line.index(destination[0]))
if destination[1] in line:
stop = (index, line.index(destination[0]))
# This else is useless, when we are at the end of a for block,
# we are automatically calling continue
# else:
# continue
# Calculate travel time and append it to results here, right after the for loop
for item in results:
print(item)我们现在知道了线路的确切位置,(您可以访问这样的站点:lines[start[0]][start[1]])。在我看来,现在计算距离会更容易,而且不需要find_in_list_of_list(mylist, char)。
如果你想我可以给你提供充分的例子,但我认为你想做它一个人。
https://stackoverflow.com/questions/72992099
复制相似问题