为什么我无法获得 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
成为一个数字而不是一个列表。您的代码中的其他地方也会出现此问题。
最后,虽然现在不会在您的代码中引起明显的问题,但还有另外两个问题:
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
等函数中定义变量(不是无效语法,但绝对很奇怪)但是在这个问题之外可能会更好地解决这些问题。
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
成为一个数字而不是一个列表。您的代码中的其他地方也会出现此问题。
最后,虽然现在不会在您的代码中引起明显的问题,但还有另外两个问题:
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
等函数中定义变量(不是无效语法,但绝对很奇怪)但是在这个问题之外可能会更好地解决这些问题。