Вы можете подавить сообщение об ошибке оболочки, перенаправив stderr
, и вставить свое собственное, используя check_output
вместо call
:
import subprocess
import os
command = str('wrong command')
devnull = open(os.devnull, 'w')
try:
output = subprocess.check_output(command, shell=True, stderr=devnull)
except subprocess.CalledProcessError:
print("oops! wrong command")
output = ""
print(output)
Public Function isLeapYear(Yr As Integer) As Boolean
' returns FALSE if not Leap Year, TRUE if Leap Year
isLeapYear = (Month(DateSerial(Yr, 2, 29)) = 2)
End Function
Я первоначально получил эту функцию от большого сайта Excel Chip Pearson.
public function isLeapYear (yr as integer) as boolean
isLeapYear = false
if (mod(yr,400)) = 0 then isLeapYear = true
elseif (mod(yr,100)) = 0 then isLeapYear = false
elseif (mod(yr,4)) = 0 then isLeapYear = true
end function
Википедия для больше... http://en.wikipedia.org/wiki/Leap_year
Если эффективность является соображением, и ожидаемый год случаен, то могло бы быть немного лучше сделать самый частый случай сначала:
public function isLeapYear (yr as integer) as boolean
if (mod(yr,4)) <> 0 then isLeapYear = false
elseif (mod(yr,400)) = 0 then isLeapYear = true
elseif (mod(yr,100)) = 0 then isLeapYear = false
else isLeapYear = true
end function
Я нашел этот забавный на CodeToad:
Public Function IsLeapYear(Year As Varient) As Boolean
IsLeapYear = IsDate("29-Feb-" & Year)
End Function
Хотя я вполне уверен, что использование IsDate в функции, вероятно, медленнее, чем несколько если, elseifs.