来自中级python背景,我刚开始学习javascript,我发现很难弄清楚我的代码有什么问题。我用python获得了预期的结果,但没有使用javascript。
问题
编写一个使用console.log打印1到100之间所有数字的程序,但有两个例外。对于可被3整除的数字,请打印“Fizz”而不是数字,对于可被5整除(而不是3)的数字,请打印“Buzz”。
如果你有这个工作,修改你的程序打印“FizzBuzz”,对于可以被3和5整除的数字(并且仍然打印“Fizz”或“Buzz”表示只能被其中一个整除的数字)。 / p>
python中的代码
for x in range(100):
if x % 3 == (x % 5) == 0:
print('FuzzBazz')
if x % 3 == 0:
print('Fizz')
continue
if x % 5 == 0:
print('Buzz')
continue
print(x)
JS中的代码
for (var x = 0; x < 100; x++) {
if (x % 3 === x % 5 === 0) {
console.log("FizzBuzz");
}
if (x % 3 === 0) {
console.log("Fizz");
continue;
}
if (x % 5 === 0) {
console.log("Buzz");
continue;
}
console.log(x);
}
答案 0 :(得分:3)
2个错误,都在同一行:
您在第一次比较后忘记了0
x%3
您忘记在行
&&
醇>
因此
if(x%3===x%5===0)
实际应该是:
if(x%3===0 && x%5===0)
另外,值得指出else
可以代替continue
使用,如下所示:
if (x%3===0 && x%5===0) {
console.log("fizzbuzz");
} else if (x%3===0) {
console.log("fizz");
} else if (x%5===0) {
console.log("buzz");
} else {
console.log(x);
}
答案 1 :(得分:1)
2个错误是
if(x%3===x%5===0)
这是错误的,因为x%3 === x%5为真而不是0,这将与0进行比较,这将始终为false,因此将其修改为(x%3===0 && x%5===0)
。 eg : 15 it will print FIZZBUZZ and FIZZ and BUZZ which is wrong.
我修改了代码,请看一下。
for (var x=0; x<100; x++){
if(x%3===0 && x%5===0){
console.log("FizzBuzz");
}else{
if(x%3===0){
console.log("Fizz");
}if(x%5===0){
console.log("Buzz");
}
console.log(x);
}
}
答案 2 :(得分:1)
尝试以下代码
for (var x=0; x<10; x++){
if(x%3===0 && x%5===0){
console.log("FizzBuzz");
}
if(x%3===0){
console.log("Fizz"); continue;
}
if(x%5===0){
console.log("Buzz");continue;
}
console.log(x);
}
答案 3 :(得分:1)
您的困惑来自于JavaScript处理比较与Python略有不同的事实。
当您运行x%3===x%5===0
时,您希望JS将x%5
与0
和x%3
与x%5
进行比较,就像Python一样。但是,JS会将x%3
与x%5
进行比较,从而生成true
或false
,然后将其与0
进行比较。由于true
或false
都不等于0
,因此该表达式将始终评估为false
。
直接翻译为JS的比较表达式看起来像x%3 == 0 && x%5 == 0
。但是,由于15
是3
和5
的最低公倍数,因此该表达式与x % 15 == 0
相同。
在评论和其他答案中也有一些关于continue
在JS中是否必要或甚至合法的讨论。两者的答案是&#34;是的,它是&#34;但是有一种更简单的方法。
而不是使用continue,如下面的代码所示:
for (var x = 0; x < 100; x++) {
if (x % 15 == 0) {
console.log("FizzBuzz");
continue;
}
if (x % 3 == 0) {
console.log("Fizz");
continue;
}
if (x % 5 == 0) {
console.log("Buzz");
continue;
}
console.log(x);
}
可以在此代码中使用else if
:
for (var x = 0; x < 100; x++) {
if (x % 15 == 0) {
console.log("FizzBuzz");
} else if (x % 3 == 0) {
console.log("Fizz");
} else if (x % 5 == 0) {
console.log("Buzz");
} else {
console.log(x);
}
}
最后一段代码就是我如何在JavaScript中实现fizzbuzz。