Найти - Пользователи
Полная версия: Вот, такие пироги.
Начало » Центр помощи » Вот, такие пироги.
1 2
Neofit
Ув.эксперты, не поможете юной леди и ее весьма далекому от вопросов программирования отцу? Обе задачки (см att), как я понимаю, “не бином Ньютона”, наверное, в excell'e было бы сделать даже быстрее. Но надо на Питоне. Обещаю, что не “перепрём” с ребенком тупо, а разберемся в коде. С меня по системе “бекицер” консультация по вопросам строительства / ремонта алаверды )
Romissevd
Первую задачу можно решить так:
 import random
values = [random.randint(-100, 100) for _ in range(10)] 
def sort_function(lst):
    lst_positiv = []
    lst_negativ = []
    lst_0 = []
    for x in lst:
        if x > 0:
            lst_positiv.append(x)
        elif x < 0:
            lst_negativ.append(x)
        else:
            lst_0.append(x)
    return sorted(lst_positiv) + sorted(lst_negativ) + lst_0, len(lst_positiv)
res = sort_function(values)
print('Список из случайных чисел =', values)
print('Отсортированный список =', res[0])
print('Количество положительных чисел =', res[1])
ZerG
Я так понимаю что вам нужно решение в примитивном виде?
Тогда получается что-то такое

 # -*- coding: utf-8 -*-
import random
result = []
# Количество членов массива 10
for count in range(10):
    # заполним массив result псевдослучайными значениями
    result.append(random.randint(-10, 10))
# Выведем результат
print(result)
# Произведем сортировку
sorted_result = sorted(result)
# Выведем отсортированный результат
print(sorted_result)
# Начальное значение положительных членов массива
total = 0
# сосчитаем количество положительных членов массива
for value in sorted_result:
    # если значение больше нуля
    if value > 0:
        total += 1
# Выведем количетсво положительных членов массива
print(total)

Результат для примера:
 [-7, 1, 6, 8, -2, 6, 1, -8, -3, 6]
[-8, -7, -3, -2, 1, 1, 6, 6, 6, 8]
6

Конечно данный код далек от совершенства и его можно записать в 3 строчки, но я сомневаюсь то вам нужен именно такой вариант


Romissevd - камрад- там же для ребенка попросили. К тому же твой вариант через чур избыточен.
Romissevd
Вторая задача
 import random
m = 100 # предельное число, из которого будет формироваться список случайных чисел и ряда Фибоначчи
values = [random.randint(0, m) for _ in range(10)] # формируем список из случайных чисел
def fibo(n):
    lst = [0, 1]
    for i in range(2, n + 1):
        lst.append(lst[i-1] + lst[i-2])
    return lst
lst_fibo = fibo(m)
lst_number_fibo_in_values = []
for x in values:
    if x in lst_fibo:
        lst_number_fibo_in_values.append(x)
print('Список из случайных чисел =', values)
print('Числа Фибоначчи, которые находятся в сформированном списке', lst_number_fibo_in_values)
Romissevd
ZerG
Romissevd - камрад- там же для ребенка попросили. К тому же твой вариант через чур избыточен.
Согласен полностью с Вами по поводу растягивания “волынки”, исходил из того, что нужно для школьника, поэтому и писал на примитивном уровне.

Но, Ваше ZerG решение не совсем верно, так как в условии сказано, что нужно вернуть отсортированный массив, в котором сперва положительные, потом отрицательные, а затем нули, хотя отрицательные и нули в конце (а у Вас это так), но в примере как раз 0 в конце, метод sorted() нули впихнет в середину…
FishHook
Romissevd
сперва положительные, потом отрицательные, а затем нули, метод sorted() нули впихнет в середину
 a = [3, 5, 0, -1, -5, 78, 0, -5]
print sorted(a, key=lambda x: x or None, reverse=True)
ZerG
FishHook
Ну да есть же метод реверса.
Romissevd
FishHook, но нули-то в середине списка все равно, а исходя из приведенного примера нули должны быть в конце списка….
FishHook
Romissevd
С хреналь?


ZerG
FishHook
С того что надо любить sorted() а Romissevd его не любит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB