НА ПИТОНЕ, ПОМОГИТЕ ПОЖАЛУЙСТА!
# -*- coding: utf-8 -*-
'''
Список-массив из n целых чисел генерируется случайным образом
в диапазоне от a до b. Числа n, a, b вводятся по запросу с экрана.
Выведите полученный массив на экран.
Затем с экрана запрашивается произвольное целое число d (не обязательно
из диапазона от a до b).
Найдите в полученном массиве элемент, самый близкий по величине к данному
числу d, но не равный ему. Если таких чисел несколько — выведите любое из них.
Также выведите его индекс.
Замечание. Вам понадобится функция для вычисления абсолютной величины числа.
Она есть в Питоне, это abs(x).
!!! Никаких методов Питона для работы с массивами, кроме append и len,
!!! использовать нельзя.
'''
Answers & Comments
from math import *
from random import *
# Импортирую нужные библиотеки
Num = int(input("Товарищ, ввиди количество элементов в массиве"))
a = int(input("Случайные числа от: "))
b= int(input("До: "))
My_Table = []
for num in range(Num):
My_Table.append(randint(a,b))
print(My_Table)
#Вторая часть задания с параметром D
d = int(input("Ввиди любое число и я смогу найти максимально близкое, но не равное ему число: "))
Record_abs = []
mt = My_Table
for object in range(len(My_Table)):
Record_abs.append([abs(mt[object]-d),object])
record = Record_abs[0]
for absolutes in range(len(Record_abs)):
if Record_abs[absolutes][0]<record[0] and Record_abs[absolutes][0]!=0:
record=[Record_abs[absolutes][0],absolutes]
if record[0]!=0:
print("Ваше число: " + str(My_Table[record[1]]))
print("Индекс числа в твоем массиве: "+str(record[1]))
Вроде работает)!
Обьяснение:
Алгоритм создание случаных чисел и впендюривание их в массив таков:
1.Используйте метод randint в классе random для создание случайных чисел на диапозоне
random.randint(Дипозон1, Дипозон2) => random.randint(4, 14) - Случайное число от 4 до 14
2.Чтобы вставить в конце массива элемент надо использовать функцию append привязонную ко всем обьктам класса list
Super_puper_krutoi_masiv = []
Super_puper_krutoi_masiv.append(11) #Super_puper_krutoi_masiv = [11]
Во второй части задание все чуть посложнее:
Чтобы сравнивать кто ближе, надо знать растояние!
Растояние между цислами = Модуль(Число1 - Число2)
Пример:
Растояние между 7 и 5 будет 2, так, как |7-5| = 2
Растояние между 5 и 7 будет 2, так, как |5-7| = 2
abs() - функция возведения числа в модуль
Делаем тоже самое, только место случайных чисел, отнимаем число d, чтобы определить растояние до него
abs(mt[object]-d)
Также в условие говорится одна вешь - Элемент массива не должен быть равен числу, которое мы ишем( тоесть число d)
[9,9,9,10,10] , при d = 10 ==> 9
Чтобы избежать токого, надо прописать строчку в условие:
Record_abs[absolutes][0]!=0
Так,как ответ может быть таким, лишь при растоянии равным 0
Далее я пихаю всю информацию о растояниях и индексах массивов в перемменную Record_abs
переменная record = [растояние,индекс числа]
массив Record_abs[Индекс] = [растояние,индекс числа]
Ну, вот так, как то!)