给定一个字符串作为输入,编写一个python程序来打印所有乘客的车票id

2024-05-16 01:37:18 发布

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

输入格式=src:destination:mob_no 输出=src的前两个字符,后接目的地的最后两个字符,然后是偶数索引处的数字之和(包括零) 加上从1开始的乘客顺序

例如:输入是

Paris:Delhi:9945672345,Berlin:Brussels:9456723456

并且输出应该是

Pahi251,Bels292

使用的代码

a="Paris:Delhi:9945672345","Berlin:Brussels:9456723456"
c=a[0][0:2]
d=a[0][9:11]
mob_no=a[0][12:]

i=0
sum=0
while(i<len(mob_no)):
    if i%2==0:
        e=mob_no[i]
        sum=sum+int(e)
    i=i+1

ticket =str(c)+str(d)+str(sum)+str(1) 

print(ticket)

Tags: nosrc格式字符ticketdestinationsummob
1条回答
网友
1楼 · 发布于 2024-05-16 01:37:18

a的赋值似乎是错误的。您的问题表明输入是一个字符串,而不是字符串列表

您的代码尝试以固定偏移量获取子字符串,但当然,您的输入不是固定长度的;每个城市的长度可能不同于其他城市。相反,您只需要在分隔符上split加上":"

您可以使用enumerate使用索引变量循环列表,使用range循环移动电话号码中的不均匀索引

a = "Paris:Delhi:9945672345,Berlin:Brussels:9456723456"

tickets = []

for idx, leg in enumerate(a.split(","), 1):
    src, dest, mob = leg.split(":")
    sum = 0
    for i in range(0, len(mob), 2):
        sum += int(mob[i])
    tickets.append("%s%s%i%i" % (src[0:2], dest[-2:], sum, idx))

print(tickets)

演示:https://ideone.com/YFC9hB

接下来,可能会尝试一次咬下一小块,然后找出代码的哪一部分没有达到您希望的效果。使用print语句,以便Python在程序中的每个有趣点告诉您每个变量的值。然后与你期望的进行比较,可能在用minimum reproducible example提问之前先用谷歌进行比较

相关问题 更多 >