Я пытаюсь добавить сумму трех чисел в JavaScript, но это дает мне NaN. Зачем?

Вы можете сделать это, используя ключевое слово levels в контуре.

enter image description here [/g1]

import numpy as np
import matplotlib.pyplot as plt

fig, axs = plt.subplots(1,2)

x = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x, x)
Z = np.sin(X)*np.sin(Y)

levels = np.linspace(-1, 1, 40)

zdata = np.sin(8*X)*np.sin(8*Y)

cs = axs[0].contourf(X, Y, zdata, levels=levels)
fig.colorbar(cs, ax=axs[0], format="%.2f")

cs = axs[1].contourf(X, Y, zdata, levels=[-1,0,1])
fig.colorbar(cs, ax=axs[1])

plt.show()

Вы можете изменить цвета, выбирая и различные [ д0] Colormap ; используя vmin, vmax; и др.

0
задан Jack Bashford 24 February 2019 в 01:48
поделиться

3 ответа

В вашем цикле вы зацикливаетесь на длину, равную arguments, но, поскольку это массив на основе 0, вы идете на одну итерацию слишком далеко. Измените <= на <:

var userEntry1 = Number(window.prompt("Enter in a number of your choice"));
var userEntry2 = Number(window.prompt("Enter in a number of your choice"));
var userEntry3 = Number(window.prompt("Enter in a number of your choice"));
var sum;
var i;

function addNumb(userEntry1, userEntry2, userEntry3) {
  "use strict";
  sum = userEntry1 + userEntry2 + userEntry3;
  for (i = 0; i < arguments.length; i += 1) {
    sum += Number(arguments[i]);

  }
  return sum;

}

addNumb(userEntry1, userEntry2, userEntry3);
window.console.log(sum);

0
ответ дан Jack Bashford 24 February 2019 в 01:48
поделиться

Объект arguments имеет ключи от 0, поэтому вы должны проходить через этот объект от 0 до keys.length - 1.

Объект arguments на самом деле является объектом key-value, поэтому вы можете использовать оператор in.

var userEntry1 = Number(window.prompt("Enter in a number of your choice")),
    userEntry2 = Number(window.prompt("Enter in a number of your choice")),
    userEntry3 = Number(window.prompt("Enter in a number of your choice")),
    sum,
    i;

function addNumb(userEntry1, userEntry2, userEntry3) {
  console.log(arguments)// keys from zero to keys.length - 1
  "use strict";
  sum = userEntry1 + userEntry2 + userEntry3;
  for (var arg in arguments) sum += Number(arguments[arg]);
  return sum;
}

addNumb(userEntry1, userEntry2, userEntry3);
console.log(sum);

0
ответ дан Jerry 24 February 2019 в 01:48
поделиться

Вы уже суммируете три введенных числа (sum = userEntry1 + userEntry2 + userEntry3;) и вам вообще не нужен цикл for. Если вам нужно использовать цикл for, то вам следует удалить строку sum = userEntry1 + userEntry2 + userEntry3;. С помощью "use strict" вам придется удалить объявления аргументов функции, чтобы избежать ошибок «переменная объявлена, но не используется».

var userEntry1 = Number(window.prompt("Enter in a number of your choice"));
var userEntry2 = Number(window.prompt("Enter in a number of your choice"));
var userEntry3 = Number(window.prompt("Enter in a number of your choice"));

function addNumb(userEntry1, userEntry2, userEntry3) {
    "use strict";
    var sum = userEntry1 + userEntry2 + userEntry3;
    return sum;       
}

function addNumb2() {
    "use strict";
    for (var i = 0, sum = 0; i < arguments.length; i++) {
        sum += Number(arguments[i]);
    }
    return sum;
}

console.log(addNumb(userEntry1, userEntry2, userEntry3));
console.log(addNumb2(userEntry1, userEntry2, userEntry3));

0
ответ дан Nick 24 February 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: