Ruby on rails 回顾我的闰年计划
我正在使用Chris Pine的教程学习ruby: 基本上,任务是编写闰年计划: 写一个程序,要求一个起始年和一个结束年,然后把所有的闰年放在它们之间(包括它们,如果它们也是闰年的话)。闰年是可以被四整除的年份(比如1984年和2004年)。然而,被100整除的年份不是闰年(比如1800年和1900年),除非它们被400整除(比如1600年和2000年,实际上是闰年) 以下是我编写的程序:Ruby on rails 回顾我的闰年计划,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用Chris Pine的教程学习ruby: 基本上,任务是编写闰年计划: 写一个程序,要求一个起始年和一个结束年,然后把所有的闰年放在它们之间(包括它们,如果它们也是闰年的话)。闰年是可以被四整除的年份(比如1984年和2004年)。然而,被100整除的年份不是闰年(比如1800年和1900年),除非它们被400整除(比如1600年和2000年,实际上是闰年) 以下是我编写的程序: puts "leap years program" puts "" puts "what is the s
puts "leap years program"
puts ""
puts "what is the starting year?"
startYear = gets.to_i
puts "what is the ending year?"
while (endYear = gets.to_i) < startYear
puts "ending year should be later than starting year, please re-input:"
end
while startYear < endYear
while ((startYear % 4 == 0 and startYear % 100 != 0) or (startYear % 100 == 0 and startYear % 400 == 0))
puts startYear.to_s
startYear = startYear + 1
end
startYear = startYear + 1
end
推出“闰年计划”
放置“”
提出“起始年是什么?”
startYear=get.to_i
提出“结束年份是什么?”
而(endYear=gets.to_i)
为什么我需要写两次startYear=startYear+1
——一次在内部while循环中,一次在外部while循环中
此外,任何其他改进我的程序的指针和提示都将不胜感激。您可以在内部while循环条件中添加条件'startYear
因此,将startYear增加1,使其为2001,这会使内部循环条件失效。然后,在外循环中将startYear再次增加1,然后再根据内循环条件对其进行测试。这确保了您不会在同一年进行两次测试。您使用的是一个内部循环,而您真正需要做的是在外部循环中每次迭代检查一次。因此,您可以尝试在循环中使用条件:
while startYear < endYear
if (startYear % 4 == 0 and startYear % 100 != 0) or
(startYear % 100 == 0 and startYear % 400 == 0)
puts startYear.to_s
end
startYear = startYear + 1
end
也许这样更好:
puts "leap years program".center(60)
puts ""
puts 'Please type a starting year: '
starting = gets.to_i
puts 'Please type a ending year: '
while (ending = gets.to_i) < starting
puts 'ending year should be later than starting year, please re-input:'
end
puts 'All leap years below:'
while starting <= ending
if (starting%100 != 0 and starting%4 == 0) or (starting%100 == 0 and starting%400 == 0)
puts starting
end
starting = starting + 1
end
put“闰年计划”。中心(60)
放置“”
输入“请键入起始年份:”
开始=到达
放入“请键入结束年份:”
当(结束=到达)开始时
puts'结束年份应晚于开始年份,请重新输入:'
结束
将“所有闰年都放在下面:”
在开始跟踪程序的执行时,用铅笔和纸跟踪值。为什么这里有两个嵌套循环?这应该是一个从开始到结束的循环,在这个循环中有一个if条件,它决定了当前年份是否是闰年。谢谢!我目前正在进行while循环,所以这个程序是为了练习。while循环中的if循环很有意义,idk为什么我之前没有想到这个-这似乎是最佳实践。你没有解释你改变了什么。这对新手没有帮助
puts "leap years program".center(60)
puts ""
puts 'Please type a starting year: '
starting = gets.to_i
puts 'Please type a ending year: '
while (ending = gets.to_i) < starting
puts 'ending year should be later than starting year, please re-input:'
end
puts 'All leap years below:'
while starting <= ending
if (starting%100 != 0 and starting%4 == 0) or (starting%100 == 0 and starting%400 == 0)
puts starting
end
starting = starting + 1
end