самое отрицательное значение для питона
Я ожидаю иметь -2, сделает переполнение целого числа.
from sys import maxint maximum_int = maxint minimum_int = -maxint - 2 # 2147483647 # -2147483649 print maximum_int print minimum_int
Еще. Отображается правильный результат и отображается значение, которое является более отрицательным, чем -maxint-1 .
7 ответов
Здесь вы можете увидеть результат продвигается в течение длительного
>>> from sys import maxint >>> type(-maxint) >>> type(-maxint-1) >>> type(-maxint-2) >>>
Обратите внимание, что обычное соглашение для знаковых значений — иметь еще одно отрицательное число, а не положительное, поэтому в этом случае -2147483648 по-прежнему является целым
Python автоматически сообщает int значения, которые переполняются до long , который не имеет ограничения, кроме доступной памяти.
В Python int s будет автоматически повышаться до long (bigint).
Python реализует концепцию бигинга, этот тип называется long. Размер практически не ограничен.
Python способствует переполнению int произвольной длины, которая ограничена только доступной памятью.
Вы можете увидеть продвижение с этим кодом:
import struct from sys import maxint maximum_int = maxint minimum_int = -maxint-1 big_minus = -maxint-(maxint*maxint) big_plus=maxint*maxint*maxint def platform(): return struct.calcsize("P") * 8 def bit_length(x): s=bin(x) s=s.lstrip('-0b') return len(s) print print 'running in ', platform(), ' bit mode. ' print 'maxint: ', maximum_int, ' bits: ', bit_length(maximum_int) print 'minint: ', minimum_int, ' bits: ', bit_length(minimum_int) print 'a big minus: ', big_minus, ' bits: ', bit_length(big_minus) print 'big_plus: ', big_plus, ' bits: ', bit_length(big_plus) print
Работает под 32-битным Python, вот возвращение:
running in 32 bit mode. maxint: 2147483647 bits: 31 minint: -2147483648 bits: 32 a big minus: -4611686016279904256 bits: 62 big_plus: 9903520300447984150353281023 bits: 93
running in 64 bit mode. maxint: 9223372036854775807 bits: 63 minint: -9223372036854775808 bits: 64 a big minus: -85070591730234615856620279821087277056 bits: 126 big_plus: 784637716923335095224261902710254454442933591094742482943 bits: 189
import sys """ max negative number """ print(sys.maxsize * -1) """through python's internal casts from int to long""" print(sys.maxsize * -1 + 1) """ The sys.maxint constant was removed, since there is no longer a limit to the value of integers. However, sys.maxsize can be used as an integer larger than any practical list or string index. It conforms to the implementation’s “natural” integer size and is typically the same as sys.maxint in previous releases on the same platform (assuming the same build options). [1]: https://docs.python.org/3.1/whatsnew/3.0.html#integers """
Если вам действительно нужно самое отрицательное значение для python, float (‘- inf’) работает хорошо.
Максимальный отрицательный элемент массива
В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.
Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.
Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.
После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.
Pascal
const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 50;
write(arr[i],' ');
end;
writeln;
index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] >arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,': ',arr[index]);
end.
-36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4
Язык Си
#include < stdio.h>
#define N 15
main() int arr[N],index, i;
srand(time(NULL));
for (i=0; i < N; i++) arr[i] = rand() % 100 - 50;
printf("%d ", arr[i]);
>
printf("\n");
index = -1;
for (i=0; i < N; i++) if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] >arr[index])
index = i;
>
printf("%d-й = %d\n",index+1,arr[index]);
>
33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1
Python
from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) - 50)
print(arr)
i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] >arr[index]:
index = i
i += 1
print(index+1,':', arr[index])
[-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5
КуМир
алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, index
нц для i от 1 до N
arr[i] := irnd(100) - 50
вывод arr[i], " "
кц
вывод нс
index := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] >arr[index] то
index := i
все
все
кц
вывод index, ": ", arr[index], нс
кон
19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2
Basic-256
N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) - 50
print arr[i] + " ";
next i
index = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next i
print index+1;
print ": ";
print arr[index]
17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7
Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.
Найти максимальное отрицательное значение в рандомно сгенерированой матрице
матрица генерируется отлично, проблема только в том что если число с индексом 0 положительное(matrix[0]) то оно выводит первый ряд, если же число отрицательное то все отлично работает.
Есть идеи как исправить, я уже пару часов над этим сижу : /
Найти максимальное отрицательное значение функции
Найти максимальное отрицательное значение функции Вот и вся задача. 2 день мучаюсь , не могу.
Найти максимальное отрицательное значение в каждой строке матрицы
Элементы массива задать случайным образом в интервале –50 . +50. Элементы, равные 0, считать.
Найти максимальное отрицательное значение в каждой строке матрицы
Добрый день! Помогите, пожалуйста, разобраться. В программировании толком не разбираюсь пока, но.
Найти максимальное значение в матрице
в матрице D найти максимальное значение. Заменить ср. арифм. чисел строки, в котором находиться.
В заданной матрице найти максимальное значение
Помогите. В заданной матрице P (7,3) найти максимальное значение. Вывести исходную матрицу и.
Сообщение было отмечено Someo как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
import random n = int (input ('размер матрицы n= ')) m = int (input ('мин m= ')) a = int (input ('макс a= ')) matrix = [] for i in range(n): matrix.append([]) for j in range (n): matrix[i].append(random.randint(m,a)) for row in matrix: for elem in row: print (elem, end=' ') print() flag = True #max = matrix[0] for i in range(n): for j in range(n): if flag: if matrix[i][j]0: flag = False max = matrix[i][j] else: continue if matrix[i][j]>max and matrix[i][j]0: max=matrix[i][j] if flag: print('отрицательных элементов нет') else: print('максимальное отрицательное', max)
Есть ли возможность вывести весь ряд в котором находится максимальное отрицательное число?
При print(matrix[max]) выводится последнее число матрицы
Сообщение было отмечено Someo как решение
Решение
Найти максимальное значение в квадратной матрице
Дана квадратная матрица Е. Напишите, пожалуйста, программу поиска макс. значения в этой матрице
Найти максимальное значение в прямоугольной матрице
Заполнить двумерный массив размером 3 * 4 случайными числами. Вывести его на экран. Найти.
Нужно найти максимальное и минимальное значение в матрице
Нужно найти максимальное и минимальное значение в матрице. Почему-то не выводится максимум для.
Найти максимальное и минимальное значение в матрице и их положение
Дана матрица действительных чисел. Найти максимальное и минимальное значение всей матрицы и их.
Как найти максимальное значение в одном столбце матрице?
не могли бы подсказать как найти максимальное значение в одном столбце матрице?
В матрице найти максимальное значение меньшее заданного значения
Нужно написать программу по матрицам (А*В) в результате нужно найти max1 <= A найти max2 * В найти.
Требуется наибольшее отрицательное число из списка в Python
Проблема, с которой я столкнулся, заключается в том, что если мой список содержит [-11, -44, -77] моя программа печатает -11 как самая низкая температура. Но мне нужно напечатать -77 .
# Create a list called temperatures to capture user input temperatures_list = [] # Create a while loop to capture user input into the temperatures_list
if __name__ == "__main__":
while True: enter_number = (input("Please enter a temperature (enter stop to end): ")) if enter_number == "stop": break temperatures_list.append(enter_number) lowest_temp = min(temperatures_list) highest_temp = max(temperatures_list) total_temps = len(temperatures_list) # Print output of temperatures input by user print(f"The numbers you input are:", temperatures_list) print(f"The lowest temperature you input is: ", lowest_temp) print(f"The highest temperature you input is: ", highest_temp) print(f"There are a total of temperatures in your list")
3 ответа
Проблема в том, что числа представлены в строковом формате, поэтому min () и max () не сравнивают числовые значения значений списка. Это должно помочь:
# Create a list called temperatures to capture user input temperatures_list = [] # Create a while loop to capture user input into the temperatures_list
if __name__ == "__main__":
while True: enter_number = (input("Please enter a temperature (enter stop to end): ")) if enter_number == "stop": break temperatures_list.append(int(enter_number)) lowest_temp = min(temperatures_list) highest_temp = max(temperatures_list) total_temps = len(temperatures_list) # Print output of temperatures input by user print(f"The numbers you input are:", temperatures_list) print(f"The lowest temperature you input is: ", lowest_temp) print(f"The highest temperature you input is: ", highest_temp) print(f"There are a total of temperatures in your list")
В качестве побочного примечания вы можете добавить попытку, кроме случаев, когда пользователь вводит значения, не являющиеся числами, так как это приведет к сбою вашей программы при преобразовании значений в целочисленный тип. Например:
# Create a list called temperatures to capture user input temperatures_list = [] # Create a while loop to capture user input into the temperatures_list
if __name__ == "__main__":
while True: enter_number = (input("Please enter a temperature (enter stop to end): ")) if enter_number == "stop": break try: temperatures_list.append(int(enter_number)) except ValueError: print('That wasn't a number! Try again) lowest_temp = min(temperatures_list) highest_temp = max(temperatures_list) total_temps = len(temperatures_list) # Print output of temperatures input by user print(f"The numbers you input are:", temperatures_list) print(f"The lowest temperature you input is: ", lowest_temp) print(f"The highest temperature you input is: ", highest_temp) print(f"There are a total of temperatures in your list")
float() также будет работать, если вы хотите включить числа с десятичными знаками.