【发布时间】:2022-01-14 16:28:57
【问题描述】:
我不知道为什么会出现此错误:Traceback(最近一次调用最后一次): 第 78 行,在 find_max_gap(x) 第 22 行,在 find_max_gap 中 vmin = x[0] TypeError: 'int' 对象不可下标
我是 Python 新手,因此很难跟踪我所犯的错误。我一直在试图弄清楚一整天发生了什么
用户输入参数并创建一个随机列表,计算其元素之间的最长距离。
import random
def generate_random_floats(n,m,seed):
x = []
if (y==0):
random.seed()
for i in range (n):
x.append(random.uniform(-m,m))
else:
random.seed(y)
for i in range (n):
x.append(random.uniform(-m,m))
return x
pass
# function that returns a list of n random numbers in span
# -m, m with seed generator of random numbers (optional argument)
def find_max_gap(x):
vmin <= x[0]
dmax = 0
for i in range (n):
if (x[i] < vmin):
vmin = x[i]
elif (x[i] - vmin > dmax):
dmax = x[i] - vmin
return (dmax)
# function that accepts a list of real numbers and returns the maximum distance between them
pass
def present_list():
print(" The random list is:",generate_random_floats(n,m,seed))
# auxiliary function that prints the elements of a list
pass
n=-1
while n < 0 or n == 0 :
while True:
try:
# user input of how many random numbers
n = int(input(">>Define the number (n) from the random numbers.\n-Positive number) :"))
break
except:
continue
m=-1
while m < 0 :
while True:
try:
# input user -m, m
m = int(input(">>Define (range) from which random values will be selected.\n) :"))
break
except:
continue
seed=0
b=0
x=0
s=0
while True:
try:
# input seed
y = int(input("Enter the number that will set the seed value. :"))
break
except:
continue
# create list of random numbers
generate_random_floats(n,m,seed)
present_list()
find_max_gap(x)
【问题讨论】:
-
在函数“generate_random_floats”中使用 y 而不是种子是不是错字?
-
我不这么认为。我更改了它,但仍然收到此消息。
-
请edit你的问题显示完整的错误信息。
-
小注:1)
while n < 0 or n == 0 :是一种缓慢/冗长的拼写while n <= 0:的方式。 2) 从不 使用一个裸露的except:,它在完成时不会重新raise异常。当然,您可能希望忽略用户错误并再次询问,但即便如此,请使用except Exception:,这样您就不会在用户按下 Ctrl-C 强制退出程序或按下 Ctrl-D 时忽略它结束输入,但你只是一直提示它们。