【问题标题】:Why can't I get the output in Python?为什么我无法在 Python 中获得输出?
【发布时间】:2015-01-19 04:16:48
【问题描述】:
 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 列表中,只有两个元素,所以索引号将从 0 开始对吗?有什么我应该进口的吗?我什至给出了这样的声明:

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

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

【问题讨论】:

  • 请修正缩进 - 每步 4 个空格。此外,您在某处缺少关闭 """...
  • 请帮忙
  • @Animeartistfromhell7,你看过你的Q了吗?压痕仍然很破碎。此外,除了修复它之外,还要为您的异常发布适当的堆栈跟踪,以明确它发生的位置。
  • 您尚未编辑您的问题,因此未修复任何问题。请单击此edit 链接来修复您的代码,并添加您遇到的任何错误或回溯的整个文本
  • 现在缩进是正确的,但错误是“列表索引超出范围”

标签: python list indexing output


【解决方案1】:

您遇到的具体问题是由这里的这些行引起的:

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 运行用户输入的任何代码 sn-p。在这种情况下,更安全的是ch5=int(raw_input("Enter your choice"))

  2. for i in range(0,2,1): 真的是for i in range(2): - 如果您需要更改它们的默认值,即 0 和 1,请仅使用起始索引和跳转参数。

还有其他问题,例如变量范围(您希望 travel.frate 可以在住宿内进行修改,但事实并非如此)以及在 travel.frate 之类的函数中定义变量(不是无效的语法,但绝对是奇怪的)但是那些在这个问题之外可能更好地解决。

【讨论】:

  • 感谢您的辛勤工作!我是 python 新手,我真的需要这个帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2020-02-28
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多