1

我正在创建一个代码,当用户在对象列表中选择超出范围的输入数字时,我想创建一条错误消息。我正在使用的代码如下:当输入超出列表中的范围时执行错误消息 - python

choose = int(input('Which one would you like to do a fundamental analysis on?:')) 
share = (object_list[choose - 1]) 
print('\n-----Fundamental analysis for ' + share.company_name + '-----') 
print('The company solidity is:') 
print(share.solidity) 
print('The company p/e value is:') 
print(share.p_e) 
print('The company p/s value is:') 
print(share.p_s) 

预先感谢您!

+0

使用'try' /'除了IndexError:' – JohanL

+0

@coldspeed:很好找。但是,原始答案不检查负指数。尝试/除非在该特定情况下效率低下。那么,我会回答这样的原始问题,但我回答了一个,而不是... –

回答

2

,你可以保护一个try/except声明数组访问:

choose = int(input('Which one would you like to do a fundamental analysis on?:')) 
try: 
    share = (object_list[choose - 1]) 

except IndexError: 
    # do something 

但不会保护你免受负面指标(如果choose设置为0,那么你访问索引-1这是有效的。蟒蛇所以我建议手动检查来代替(我建议到预减choose先遵守,以0开始排列):

choose -= 1 
if 0 < choose < len(object_list): 
    # okay 
    ... 
else: 
    raise IndexError("index out of range: {}".format(choose+1)) 
+0

这看起来很有希望!我复制它,并放在我的代码周围,但我仍然只是从程序gett索引错误..我真的不明白什么是错的!编辑:得到它现在的工作!谢谢! – Jurkka

1

添加if声明

if len(object_lis) < choose <= 0: 
    print("Entered value is out of range") 

或者您可以使用try...except

+1

如果'choose'是0或负数? –

+0

@ Jean-FrançoisFabre;接得好。 – haccks

+1

尝试/除了一般更好,但手动检查在这种情况下是安全的,因为负指数,是的。 –