索引错误:测试用例 1 和 2 越界;使用 try-except 块防止程序在值 3 >值 1 时崩溃



创建一个接受三个参数并打印一个整数的函数。

  • 随机种子应设置为42
  • 第一个参数应该对应于np.randint的大小-值从0到10
  • 第二个参数是一个整数,您将用它乘以randint
  • 第三个参数是一个值,您将为乘法结果编制索引由

打印索引为"您的随机值为k"的整数

k=索引的结果

如果第三个值大于第一个值,则程序不应崩溃;它不应该在屏幕上打印任何内容

代码

import sys
import numpy
import random
numpy.random.seed(42)
value1 = int(sys.argv[1])
value2 = int(sys.argv[2])
value3 = int(sys.argv[3])

def randomized(arg1, arg2, arg3):
x = numpy.random.randint(0, 10, size=arg1)
y = x * arg2
return y[arg3]

try:
random_value = randomized(value1, value2, value3)
print(f"Your random value is {random_value}")
except IndexError:
pass
randomized(value1, value2, value3)

测试用例示例:

python3 reallyrandom.py 1 2 9 
python3 reallyrandom.py 44 3 17
python3 reallyrandom.py 77 -3 55
python3 reallyrandom.py 2 4 10 

预期输出:

Your random value is 21
Your random value is -9

错误消息

Traceback (most recent call last):
File "reallyrandom.py", line 23, in <module>
randomized(value1, value2, value3)
File "reallyrandom.py", line 14, in randomized
return y[arg3]
IndexError: index 9 is out of bounds for axis 0 with size 1

如果第三个值大于第一个值,程序不应该崩溃它不应该在屏幕上打印任何东西

那么,错误raised就是IndexError,对吧?您可以使用try/except块阻止代码打印任何内容,如以下所示:

try:
# Your code
except IndexError:
pass # Nothing gets printed

最新更新