为什么我无法获得 Python 中的输出?

Why can't I get the output in Python?

 def travel():
   travel.s=0
   travel.frate=[]
   travel.tr=[]
   def accomodation():                       
                                         print"""specialises
                                         1.place 1
                                         a.hotel 1
                                         b.hotel 2
                                         Hotel1:ac/non ac rooms
                                         Ac.for ac...
                                         Noac.for non ac...."""
                                         hd=[5000,6000]
                                         hg=[4000,7000]
                                         TAc=[1000]
                                         Nac=[400]
                                         ch5=input("Enter your choice")
                                         fav=raw_input("ENter hotel choice")
                                         mode=raw_input("Enter ac/no ac")
                                         if(ch5==1):
                                                for i in hd:
                                                       frate=hd[i]+TAc

                                                else:
                                                       frate=hd[i]+Nac
                                         if(ch5==2):
                                                for i in range(0,2,1):
                                                       frate=hg[i]+TAc
                                                else:
                                                       frate=hg[i]+Nac
  accomodation()
travel()

当我运行这个程序时,我在hd和hg列表中得到的错误是List Index out of range.but,只有两个元素,所以索引号将从0开始,对吗? ?有什么我应该进口的吗?我什至给出了这样的陈述:

  travel.frate=travel.hg[i]+TAc

但它仍然没有 come.Thank 你的努力。 现在缩进是正确的,但输出仍然没有。

您遇到的具体问题是由以下几行引起的:

if(ch5==1):
    for i in hd:
        frate=hd[i]+TAc

hd[i] 查看 hd[5000]hd[6000] 将抛出 IndexError。

但是如果你修复它,你会 运行 进入另一个错误,因为

frate=hd[i]+TAc

尝试将列表 TAc 添加到整数 hd[i],这是一个不受支持的操作。您可能需要 frate=hd[i]+TAc[0],甚至更好,让 TAc 成为一个数字而不是一个列表。您的代码中的其他地方也会出现此问题。

最后,虽然现在不会在您的代码中引起明显的问题,但还有另外两个问题:

  1. ch5=input("Enter your choice") 是危险的,因为 input 告诉 Python 到 运行 用户输入的任何代码片段。在这种情况下,做 ch5=int(raw_input("Enter your choice"))

  2. 更安全
  3. for i in range(0,2,1): 实际上是 for i in range(2): - 只有在需要更改默认值(即 0 和 1)时才使用起始索引和跳转参数。

还有其他问题,例如变量作用域(您希望 travel.frate 在住宿内进行修改,但这并没有发生)和在 travel.frate 等函数中定义变量(不是无效语法,但绝对很奇怪)但是在这个问题之外可能会更好地解决这些问题。