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()
当我运行程序时,我得到的错误是List Index超出范围。但是在hd和hg列表中,只有两个元素,所以索引号将从0开始?有什么我应该导入??我甚至发表了这样的陈述:
travel.frate=travel.hg[i]+TAc
但它仍然没有来。谢谢你的努力。 缩进现在是正确的,但输出仍未到来。
答案 0 :(得分:1)
您遇到的具体问题是由以下行引起的:
if(ch5==1):
for i in hd:
frate=hd[i]+TAc
hd[i]
查看将引发IndexError的hd[5000]
和hd[6000]
。
但是如果你解决了这个问题,你就会遇到另一个错误,因为
frate=hd[i]+TAc
尝试将列表TAc
添加到整数hd[i]
,这是一项不受支持的操作。您可能需要frate=hd[i]+TAc[0]
,甚至更好,使TAc
成为数字而不是列表。此问题也会出现在代码的其他位置。
最后,虽然现在没有在代码中造成明确的问题,但还有另外两个问题:
ch5=input("Enter your choice")
很危险,因为input
告诉Python运行用户输入的任何代码段。在这种情况下,做ch5=int(raw_input("Enter your choice"))
for i in range(0,2,1):
实际上是for i in range(2):
- 如果您需要更改它们的默认值,即0和1,则只使用起始索引和跳转参数。
还有其他一些问题,例如变量范围(您希望从住宿内修改travel.frate,但是没有发生)以及在travel.frate
等函数中定义变量(不是无效的)语法,但绝对奇怪)但这些可能更好地解决了这个问题。