JavaScript 练习逻辑运算符(不起作用)
JavaScript Exercise Logical Operators (doesn't work)
我正在学习 JavaScript 课程,其中有一个关于逻辑运算符的练习不正确。问题是:
Using the logical operators you just learned, write an expression that
represents the following statement: "I would like an ice cream with
strawberry and chocolate or stracciatella, or an ice cream of any
flavour but caramel."
我已经写了这两个脚本版本,但根据课程,任何一个都是正确的:
版本 1:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella != (caramel)) || (strawberry && chocolate != (caramel)) || (chocolate && stracciatella != (caramel)));
版本 2:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella) || (strawberry && chocolate) || (chocolate && stracciatella) != (caramel));
我真的不知道出了什么问题但是。可能是我没理解对问题,如果社区里有人帮我解决这个问题,我将不胜感激。
这是一个 returns 正确的示例,基于您所输入的内容。但是如果你想要我可以给你展示一个只需要冰的香水的功能。
const iceFlavour = ['chocolate', 'strawberry', 'stracciatella','caramel']
var iceCream = (((iceFlavour[1] && iceFlavour[2]) !== 'caramel') ||
((iceFlavour[0] && iceFlavour[1]) !== 'caramel') ||
(iceFlavour[0] || iceFlavour[1] || iceFlavour[2] !== 'caramel'))
console.log(iceCream)
首先,您说的“!= caramel”不是逻辑运算符,而是比较运算符,因此“!= caramel”在任务上下文中不起作用。
应该是“&& !caramel”。
此外,您还没有为您的变量赋值,这将使
表达式结果为 "undefined";尝试给它们每个人一个值,如 "let chocolate = 'chocolate'" 或一个布尔值,如 "let chocolate = true" 和 "let caramel = false"。
希望能给你一些指导。
您可以在此处阅读有关逻辑运算符的更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
问题和您的代码都存在一些问题。我会一一解决的。
首先,问题不清楚它指的是哪个案例。
案例一
I would like an ice cream with (strawberry and chocolate) or stracciatella
案例二
I would like an ice cream with strawberry and (chocolate or stracciatella)
情况 1 中加草莓和 stracciatella 的冰淇淋是不正确的,但情况 2 中是正确的。
现在关于您的代码,您的变量未设置,更准确地说 "undefined"
这使得它们在任何逻辑操作中都被评估为 False。在该示例中,您似乎应该将它们设置为 true 或 false,然后更改这些值以查看您的逻辑结果。
在您的逻辑中,您使用的是 !=
运算符而不仅仅是 !
不同之处在于您使用 !=
进行比较,而使用 !
来描述值。
示例 1:one != two
,计算结果为 true
(假设 one = 1
、two = 2
)
示例 2:!truth
,将显示 false
(假设 truth = true
)
所以在你的代码中你需要
- 为您的变量赋值(真/假)
- 将您的
!=
运算符更改为 !
这是固定代码,尝试通过更改 flavor 的值进行实验,看看会发生什么
var chocolate = true;
var strawberry = false;
var stracciatella = true;
var caramel = true;
// case 1
var icecream = ((strawberry && chocolate) || stracciatella) || !caramel;
console.log("case 1:" + icecream);
// case 2
var icecream = (strawberry && (chocolate || stracciatella)) || !caramel;
console.log("case 2:" + icecream);
我建议看一下 Python 逻辑运算符的工作原理。在 python 中,使用单词代替逻辑运算符的符号,因此 &&
是 AND
,||
是 OR
,!
是 NOT
、!=
是 NOT EQUAL
等。通过查看它更清晰易懂,因为 python 在这些语句中使用了最少的符号,并允许这些操作措辞就像我们在说话时描述的那样。
逻辑运算符的优先级:
- 不是:!
- 比较运算符:===、>、<、>=、<=
- 并且:&&
- 或:||
如果我们将这个优先级应用到语句 "with strawberry and chocolate or stracciatella",那么 iceCream 应该有这个赋值。
var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;
但答案不正确。提示是...
Did you consider strawberry and stracciatella?
我正在学习 JavaScript 课程,其中有一个关于逻辑运算符的练习不正确。问题是:
Using the logical operators you just learned, write an expression that represents the following statement: "I would like an ice cream with strawberry and chocolate or stracciatella, or an ice cream of any flavour but caramel."
我已经写了这两个脚本版本,但根据课程,任何一个都是正确的:
版本 1:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella != (caramel)) || (strawberry && chocolate != (caramel)) || (chocolate && stracciatella != (caramel)));
版本 2:
var chocolate;
var strawberry;
var stracciatella;
var caramel;
var iceCream = ((strawberry && stracciatella) || (strawberry && chocolate) || (chocolate && stracciatella) != (caramel));
我真的不知道出了什么问题但是。可能是我没理解对问题,如果社区里有人帮我解决这个问题,我将不胜感激。
这是一个 returns 正确的示例,基于您所输入的内容。但是如果你想要我可以给你展示一个只需要冰的香水的功能。
const iceFlavour = ['chocolate', 'strawberry', 'stracciatella','caramel']
var iceCream = (((iceFlavour[1] && iceFlavour[2]) !== 'caramel') ||
((iceFlavour[0] && iceFlavour[1]) !== 'caramel') ||
(iceFlavour[0] || iceFlavour[1] || iceFlavour[2] !== 'caramel'))
console.log(iceCream)
首先,您说的“!= caramel”不是逻辑运算符,而是比较运算符,因此“!= caramel”在任务上下文中不起作用。
应该是“&& !caramel”。
此外,您还没有为您的变量赋值,这将使 表达式结果为 "undefined";尝试给它们每个人一个值,如 "let chocolate = 'chocolate'" 或一个布尔值,如 "let chocolate = true" 和 "let caramel = false"。
希望能给你一些指导。
您可以在此处阅读有关逻辑运算符的更多信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
问题和您的代码都存在一些问题。我会一一解决的。
首先,问题不清楚它指的是哪个案例。
案例一
I would like an ice cream with (strawberry and chocolate) or stracciatella
案例二
I would like an ice cream with strawberry and (chocolate or stracciatella)
情况 1 中加草莓和 stracciatella 的冰淇淋是不正确的,但情况 2 中是正确的。
现在关于您的代码,您的变量未设置,更准确地说 "undefined"
这使得它们在任何逻辑操作中都被评估为 False。在该示例中,您似乎应该将它们设置为 true 或 false,然后更改这些值以查看您的逻辑结果。
在您的逻辑中,您使用的是 !=
运算符而不仅仅是 !
不同之处在于您使用 !=
进行比较,而使用 !
来描述值。
示例 1:one != two
,计算结果为 true
(假设 one = 1
、two = 2
)
示例 2:!truth
,将显示 false
(假设 truth = true
)
所以在你的代码中你需要
- 为您的变量赋值(真/假)
- 将您的
!=
运算符更改为!
这是固定代码,尝试通过更改 flavor 的值进行实验,看看会发生什么
var chocolate = true;
var strawberry = false;
var stracciatella = true;
var caramel = true;
// case 1
var icecream = ((strawberry && chocolate) || stracciatella) || !caramel;
console.log("case 1:" + icecream);
// case 2
var icecream = (strawberry && (chocolate || stracciatella)) || !caramel;
console.log("case 2:" + icecream);
我建议看一下 Python 逻辑运算符的工作原理。在 python 中,使用单词代替逻辑运算符的符号,因此 &&
是 AND
,||
是 OR
,!
是 NOT
、!=
是 NOT EQUAL
等。通过查看它更清晰易懂,因为 python 在这些语句中使用了最少的符号,并允许这些操作措辞就像我们在说话时描述的那样。
逻辑运算符的优先级:
- 不是:!
- 比较运算符:===、>、<、>=、<=
- 并且:&&
- 或:||
如果我们将这个优先级应用到语句 "with strawberry and chocolate or stracciatella",那么 iceCream 应该有这个赋值。
var iceCream = ((strawberry && chocolate) || stracciatella) || !caramel;
但答案不正确。提示是...
Did you consider strawberry and stracciatella?