我是编程的新手,我想知道如何解决其中一个最基本的问题 - "FizzBuzz"的事情.我在Groovy中这样做.
我对如何构建代码有一个非常具体的想法,但我不能为我的生活弄清楚如何针对数组中的每个值测试一些东西.
我的意思是,对于列表[1,2,3,4]中的每个值,我将如何检查每个值是否均匀?我知道我可以选择阵列中的每个特定点,但这不是我想要的 - 我希望能够说出"如果n%2 = 0,则标记为偶数".
这是一个非常基本的例子,但你可能会得到这个想法.任何帮助将不胜感激.
给定以下变量divisor_array,low,high定义一个方法
divisor_array,则打印数字+"fizzy"测试值: generally_fizzy([2,3],1,7)
我最初的解决方案
def generally_fizzy(divisor_array, low, high)
divisors = Hash[*divisor_array]
low.upto(high) do |i|
divisors.each_pair do |k,v|
if((i % k == 0) && (i % v == 0))
puts "#{i} reallyfizzy"
elsif ((i % k == 0) || (i % v == 0))
puts "#{i} fizzy"
else
puts i
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
这个解决方案通过了给定的测试,但是当divisor_array大小从2个值增加到3个以上时,它会打印出重复的内容.除此之外,代码不是很优雅.
寻找可以处理divisor_array尺寸变化的工作替代方案.
我从这里尝试fizzbuzz程序:为什么程序员不能..程序?
"编写一个程序,打印从1到100的数字.但是对于三个打印的倍数"Fizz"而不是数字和五个打印"Buzz"的倍数.对于三和五的倍数的数字打印"FizzBuzz ""
protected void btn1_Click(object sender, EventArgs e)
{
for (int i = 1; i < 101; i++)
{
if (i % 3 == 0 & i % 5 == 0)
{
Response.Write("fizzbuzz" + ",");
}
else if (i % 3 == 0)
{
Response.Write("fizz" + ",");
}
else if (i % 5 == 0)
{
Response.Write("buzz" + ",");
}
else
{
i = i + 0;
}
Response.Write(i +",");
}
}
Run Code Online (Sandbox Code Playgroud)
我能够产生某种结果,如:
1,2,嘶嘶声,3,4-,嗡嗡声,5,嘶嘶声,6,7,8,嘶嘶声,9,嗡嗡声,10,11,嘶嘶声,12,13,14,fizzbuzz,15,16,17,嘶嘶声, 18,19,嗡嗡声,20%,嘶嘶声,21,22,23,嘶嘶声,24,嗡嗡声,25,26,嘶嘶声,27,28,29,fizzbuzz,30,31,32,嘶嘶声,33,34,嗡嗡声, 35,fizz,36,37,38,fizz,39等等..
fizz这个词已被打印,但它没有替换3和 …
编辑它的价值,承认可能不是那么多.我做了一点测试来扩展这个问题.
我写了两个函数来枚举FizzBuzz"系列".
private static IEnumerable<string> SimpleFizzBuzz(
int start = 0,
int end = int.MaxValue)
{
return Enumerable.Range(start, end).Select(i =>
i % 15 == 0 ? "fizzbuzz" :
i % 3 == 0 ? "fizz" :
i % 5 == 0 ? "buzz" :
i.ToString(CultureInfo.InvariantCulture));
}
Run Code Online (Sandbox Code Playgroud)
和,
private static IEnumerable<string> OptimizedFizzBuzz(
int start = 0,
int end = int.MaxValue)
{
const int fizz = 3;
const int buzz = 5;
const string fizzString = "fizz";
const string buzzString = "buzz"; …Run Code Online (Sandbox Code Playgroud) 有人正在努力创建一个脚本,以尽可能少的方式使用PHP打印FizzBuzz游戏
挑战
编写一个程序,打印从1到100的数字.但是对于三个的倍数打印"Fizz"而不是数字和五个打印"Buzz"的倍数.对于三和五的倍数的数字打印"FizzBuzz".
我的尝试:
foreach(range(1,100) as $i) {
$val = ($i % 3 == 0 ? "Fizz" : "").($i % 5 == 0 ? "Buzz" : "");
echo (empty($val) ? $i : $val) . '<br />';
}
Run Code Online (Sandbox Code Playgroud)
有人的蟒蛇尝试
[ ("Fizz" if not i % 3 else "") + ("Buzz" if not i % 5 else "") + ("Baz" if not i % 7 else "") if _ else "" for i in range(0, 100) ]
Run Code Online (Sandbox Code Playgroud)
你能看到如何更好/改善它吗?甚至做得更好?
谢谢你的时间
当使用"while"循环在C#中解决"fizz-buzz"时,我发现首先我应该找到3和5的倍数(15的倍数),然后像下面那样转到3和5的倍数.
int myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 15 == 0)
{
listBox1.Items.Add("fizzbuzz");
}
else if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{
listBox1.Items.Add("buzz");
}
else
{
listBox1.Items.Add(myval);
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我编写代码来首先过滤3和5的倍数然后转到3和5的倍数(15的倍数),如下所示,最终结果只显示嘶嘶声(3的倍数)和嗡嗡声(5的倍数)没有嘶嘶声(3和5的倍数).有谁知道这是什么原因,即使IDE没有向我显示任何错误.
myval = 0;
while (myval < 100)
{
myval = myval + 1;
if (myval % 3 == 0)
{
listBox1.Items.Add("fizz");
}
else if (myval % 5 == 0)
{ …Run Code Online (Sandbox Code Playgroud) 一直在玩FizzBuzz问题,我想知道为什么以下代码不会执行,没有任何东西被打印到控制台.
var i = 0;
while (i = 0, i < 100, i++ ) {
if ( i % 3 === 0) {
console.log("Fizz");
} else if ( i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试学习python并在尝试在网站上解决此测验时,我得到一个奇怪的错误,即第二个参数的断言失败,而if ifif语句是正确的并且应该给出正确的输出(但它给出错误的意外输出)
错误是:
"C:\Program Files\Python36\python.exe" C:/Users/.../PycharmProjects/pythonSnakegame/snakeGame.py
Fizz Buzz
Traceback (most recent call last):
Fizz Buzz
File "C:/Users/..../PycharmProjects/pythonSnakegame/snakeGame.py", line 28, in <module>
assert checkio(6) == "Fizz", "6 is divisible by 3"
AssertionError: 6 is divisible by 3
Process finished with exit code 1
def checkio(number):
# Your code here
# It's main function. Don't remove this function
# It's using for auto-testing and must return a result for check.
if number % 3 == 0 & number % 5 == 0: …Run Code Online (Sandbox Code Playgroud) 我知道如何在JavaScript中编写简单的FizzBuzz代码:
x = 0;while (++x < 1000)console.log((x % 3 ? "" : "Fizz") + (x % 5 ? "" : "Buzz") || x);Run Code Online (Sandbox Code Playgroud)
但是,如何在不使用'%'运算符的情况下获得相同的结果?
我正在看这段代码:
for (let n = 1; n <=100; n++) {
let output = "";
if (n % 3 == 0) output += "Fizz";
if (n % 5 == 0) output += "Buzz";
console.log(output || n);
}
Run Code Online (Sandbox Code Playgroud)
控制台如何决定何时打印数字或单词?