Какую версию C Вы используете?
В C90, общепринятая практика состоит в том, чтобы бросить к со знаком или длинному неподписанному, как соответствующая, и печать соответственно. Я видел %z для size_t, но Harbison и Steele не упоминают это под printf (), и в любом случае который не помог бы Вам с ptrdiff_t или что бы то ни было.
В C99, различные типы _t идут со своими собственными printf макросами, таким образом, что-то как "Size is " FOO " bytes."
я не знаю детали, но это - часть довольно большого числового формата, включают файл.
Обычно у вас будет каталог, имя которого является именем вашего пакета, где-то на вашем PYTHONPATH. Например:
eulerproject/
euler/
__init__.py
euler1.py
...
tests/
...
setup.py
Затем вы можете либо установить его в масштабе всей системы, либо установить PYTHONPATH = / path / to / eulerproject /: $ PYTHONPATH
при вызове вашего скрипта.
Абсолютный импорт, например это будет работать:
from euler import euler1
Edit :
Согласно документам Python, «модули, предназначенные для использования в качестве основного модуля приложения Python, всегда должны использовать абсолютный импорт». ( Цитируйте )
Таким образом, тестовый набор, такой как нос
, упомянутый в другом ответе, работает, потому что он импортирует пакеты, а не запускает их из командной строки.
Если вы Если вы хотите что-то делать вручную, ваш исполняемый скрипт должен находиться за пределами иерархии пакетов, например:
eulerproject/
runtests.py
euler/
__init__.py
euler1.py
...
tests/
__init__.py
testeulern.py
Теперь runtests.
не определено для других типов. Не
полагаться на любое наблюдаемое поведение, поскольку оно
могут быть изменены без предварительного уведомления.
Мое утверждение выше о приведении типов было неверным. На самом деле min ()
и max ()
действительно работают с массивами, но не так, как они нужны OP. При использовании min ()
и max ()
с несколькими массивами или массивом массивов элементы сравниваются элемент за элементом слева направо:
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
/*
* first element compared to first element: 2 == 2
* second element compared to second element: 4 < 5
* first array is considered the min and is returned
*/
В переводе на проблему OP это показывает причина, по которой прямое использование min ()
и max ()
, кажется, дает правильный результат. Первыми элементами массивов являются значения id
, поэтому min ()
и max ()
будут сравнивать их первыми, случайно приводя к правильному результату, потому что самый низкий id
- это тот, у которого самый низкий счет
, а самый высокий id
- тот, у которого наибольшее счетчик
.
END EDIT
Правильный способ - использовать цикл.
$a = array(
array('id' => 117, 'name' => 'Networking', 'count' => 16),
array('id' => 188, 'name' => 'FTP', 'count' => 23),
array('id' => 189, 'name' => 'Internet', 'count' => 48)
);
$min = PHP_INT_MAX;
$max = 0;
foreach ($a as $i) {
$min = min($min, $i['count']);
$max = max($max, $i['count']);
}
Что вы сделали с несколькими петлями? Одного вполне достаточно :)
Похоже, вы не можете использовать max () в 2D-массиве. Он просто возвращает самый большой массив, а не max () каждого индекса (как упоминалось в нескольких ответах).
Итак:
$count = array();
foreach($arr as $_arr) {
$count[] = $_arr['count'];
}
var_dump(max($count), min($count));
Вы можете использовать функции max
/ min
, поскольку они возвращают массив, содержащий максимум / минимум каждого индекса. Ваш пример должен вернуть array (189, 'Networking
', 48)
для max
. Затем вы можете получить счетчик из этого массива.
Обновите, это не работает, как я исключил. Пример страницы руководства вводит в заблуждение, и пример дает правильный результат с использованием max, но это просто совпадение.
Есть ли аналогичная встроенная функция для этой функции? (даже без возможности теста )
/** * extracts a column from a 2D array, with an optional selection over another column * * @param $aArray array to extract from * @param $aColName name of the column to extract, ex. 'O_NAME' * @param $aColTest (optional) name of the column to make the test on, ex. 'O_ID' * @param $aTest (optional) string for the test ex. ">= 10", "=='".$toto."'" * @return 1D array with only the extracted column * @access public */ function extractColFromArray($aArray, $aColName, $aColTest="", $aTest="") { $mRes = array(); foreach($aArray as $row) { if (($aColTest == "") || (eval("return " . $row[$aColTest] . $aTest . ";" )) ) { $mRes[] = $row[$aColName]; } } return $mRes; } // extractColFromArray