Информатика, вопрос задал kpuctuhamih , 2 года назад

НА ПИТОНЕ, ПОМОГИТЕ ПОЖАЛУЙСТА!
# -*- coding: utf-8 -*-
'''
Список-массив из n целых чисел генерируется случайным образом
в диапазоне от a до b. Числа n, a, b вводятся по запросу с экрана.
Выведите полученный массив на экран.
Затем с экрана запрашивается произвольное целое число d (не обязательно
из диапазона от a до b).
Найдите в полученном массиве элемент, самый близкий по величине к данному
числу d, но не равный ему. Если таких чисел несколько — выведите любое из них.
Также выведите его индекс.

Замечание. Вам понадобится функция для вычисления абсолютной величины числа.
Она есть в Питоне, это abs(x).
!!! Никаких методов Питона для работы с массивами, кроме append и len,
!!! использовать нельзя.
'''

Ответы на вопрос

Ответил LandLordLandLord
1

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[Индекс] = [растояние,индекс числа]

Ну, вот так, как то!)


kpuctuhamih: СПАСИБО!!!))
Новые вопросы