#python #valueerror
#python #ошибка значения
Вопрос:
Я попытался написать фрагмент кода, когда заданный процент углерода по-прежнему равен C14, что составляет 35%, и вычислить, когда образовалось ископаемое. Я предполагаю, что оно находится между периодом полураспада и вдвое большим периодом полураспада, поэтому диапазон, который я предложил: Однако я получил сообщение об ошибке
t=np.arange(5730,5730*2,1)
while t in range(5730,5730*2):
if 0.5**(t/5700)>0.35:
t =1
else:
break
print(t)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-101-cb11e85c664a> in <module>
4 t=np.arange(5730,5730*2,1)
5
----> 6 while t in range(5730,5730*2):
7 if 0.5**(t/5700)>0.35:
8 t =1
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Ответ №1:
x в y не имеет смысла спрашивать в вашем сценарии
t в диапазоне (..) потребует, чтобы t было единственным значением, но его элементом
numpy делает какие-то странные вещи и, по сути, сообщает вам, что ожидает 1 значение, но у вас есть массив
Ответ №2:
Используйте цикл for вместо цикла while . Кроме того, вы печатаете t
после торможения цикла, поэтому ваш t
никогда не будет напечатан
Используйте это вместо:
t = np.arange(5730,5730*2,1)
for t in range(5730,5730*2,1):
if 0.5**(t/5700)>0.35:
t =1
else:
print(t)
break