Целое число требуется? открытый ()

Я написал эту функцию. Передайте ему строковый параметр, и он будет определять, является ли это действительной датой или нет, основываясь на этом формате «дд / мм / гггг».

вот тест

вход: «хахаха», выход: ложь.

вход: «29/2/2000», выход: true.

вход: «29/2/2001», выход: ложь.

function isValidDate(str) {
    var parts = str.split('/');
    if (parts.length < 3)
        return false;
    else {
        var day = parseInt(parts[0]);
        var month = parseInt(parts[1]);
        var year = parseInt(parts[2]);
        if (isNaN(day) || isNaN(month) || isNaN(year)) {
            return false;
        }
        if (day < 1 || year < 1)
            return false;
        if(month>12||month<1)
            return false;
        if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day > 31)
            return false;
        if ((month == 4 || month == 6 || month == 9 || month == 11 ) && day > 30)
            return false;
        if (month == 2) {
            if (((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0 && (year % 100) == 0)) {
                if (day > 29)
                    return false;
            } else {
                if (day > 28)
                    return false;
            }      
        }
        return true;
    }
}
38
задан Victor 25 June 2009 в 23:27
поделиться

3 ответа

Поскольку вы выполнили из os import * , вы (случайно) используете os.open, который действительно требует целочисленного флага вместо текстовых «r» или «w». ". Уберите эту строку, и вы избавитесь от этой ошибки.

63
ответ дан 27 November 2019 в 03:22
поделиться

Не выполняйте import * из любого места без уважительной причины (а их немного).

Ваш код подхватывает os.open ( ) вместо встроенной функции open (). Если вы действительно хотите использовать os.open (), выполните import os , а затем вызовите os.open (....) . Независимо от того, какое открытие вы хотите вызвать, прочтите документацию о том, какие аргументы для этого требуются.

12
ответ дан 27 November 2019 в 03:22
поделиться

Также следует отметить, что, начиная с Python 2.6, встроенная функция open () теперь является псевдонимом для функции io.open (). Было даже рассмотрено удаление встроенного open () в Python 3 и требование использования io.open, чтобы избежать случайных коллизий пространств имен в результате таких вещей, как «from blah import *». В Python 2.6+ вы можете написать (и также можете считать этот стиль хорошей практикой):

import io
filehandle = io.open(sys.argv[1], 'r')
11
ответ дан 27 November 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: