Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431

Для каждого числа в отдельной строке вывести его квадратный корень

06.07.2015, 12:43. Показов 5438. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребята, помогите с этой простой задачкой, объясните , что к чему, спасибо.
________________________________________ ________________________________________ ___________
Исходные данные
Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ.
Результат
Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.
Пример
исходные данные
1427 0

876652098643267843
5276538

результат
2297.0716
936297014.1164
0.0000
37.7757

 Комментарий модератора 
Не задавайте в чужой теме вопросы, с ней не связанные. Создавайте свою тему с осмысленным заголовком и подробно изложенной сутью проблемы
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2015, 12:43
Ответы с готовыми решениями:

Для каждого числа вывести его квадратный корень
#include <stdio.h> #include <math.h> void main() { unsigned long a; scanf("%262144i", &a); for (long i = a; i != 0;...

Для каждого Ai, начиная с последнего и заканчивая первым, вывести его квадратный корень не менее чем с четырьмя знаками
задача звучит так "Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов...

Для каждого Ai, начиная с последнего и заканчивая первым, вывести его квадратный корень не менее чем с четырьмя знаками после запятой
задача звучит так "Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов...

14
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 13:48
Лучший ответ Сообщение было отмечено izuchaju_python как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from math import sqrt
import re
 
def main():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    p = re.compile('[ \n]')
    l = [x.strip() for x in p.split(stream) if x != '']
    for i in reversed(l):
        print ('%.4f' % sqrt(float(i)))
 
if __name__ == '__main__':
    main()
как прикрутить к этому "поток" разберёшься сам я надеюсь
1
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
06.07.2015, 20:02  [ТС]
если скажите какие темы в питоне нужно знать,чтобы это решить, был бы благодарен очень сильно.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 20:42
работа со строками, генераторы списков, итерация по списку, регулярные выражения )

Добавлено через 1 минуту
Да, и форматирования вывода
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 20:53
izuchaju_python, тебе же уже решили, смотри, теперь просто смотри, что не понятно и читай про это.

Добавлено через 58 секунд
Цитата Сообщение от Kurles Посмотреть сообщение
регулярные выражения
Они тут вообще даже близко не нужны, это все равно, что вскапывать клумбу метр на метр экскаватором.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 21:29
Цитата Сообщение от alex925 Посмотреть сообщение
Они тут вообще даже близко не нужны, это все равно, что вскапывать клумбу метр на метр экскаватором.
Ну почему же, для разбивки по 2м или более сепараторам можно вполне использовать. Конечно можно предварительно второй сепаратор заменить на первый, но с регэекспом проще как по мне. Или есть другой способ разбивки строки по сложному условию? Поделитесь, интересно.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 21:57
Цитата Сообщение от Kurles Посмотреть сообщение
Ну почему же,
Потому, что это применение эксковатора для вскапыванию клумбы метр на метр. С разбинием великолепно справляется старый добрый метод строк split.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from math import sqrt
 
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
l = [x for x in stream.split()]
for i in reversed(l):
    print('%.4f' % sqrt(float(i)))
В итоге я избавился от условия, от вызова метода strip, от импортирования и задействования не нужной библиотеки, а ведь это на эти все действия тратится драгоценное время и ресурсы компа. После этого, люди начинают жаловаться, что язык медленный, когда на самом деле проблема не в языке, а в быдлокоде.
1
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:02
Хотя да, в данном случае split() + strip() обойтись...
Python
1
2
3
l = [x.strip() for x in stream.split(' ') if x.strip() != '']
    for i in reversed(l):
        print ('%.4f' % sqrt(float(i)))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:05
Kurles, Strip и условия не нужны, кури лучше код.
Кстати переменные нужно называть по человечески, а не одной буквой + уже давно в основном используется метод format.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:16
Цитата Сообщение от alex925 Посмотреть сообщение
l = [x for x in stream.split()]
Да уж, точно, читайте доки... А скорости действительно иногда не хватает, приходиться расширения сишные писать, благо инструменты и возможность есть.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:26
Цитата Сообщение от Kurles Посмотреть сообщение
А скорости действительно иногда не хватает
Возможно задачи специфичные, но на сколько я вижу ты побыдлокодить любишь, не удивительно, что код медленно работает.

Добавлено через 5 минут
Вот тебе живой пример как твой быдлокод затрудняет обработку.
Мой код выполняется за: 14.809430279012304
Твой за: 25.27179295400856
А ведь это элементарщина, на пару строк......
Python
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
30
31
32
33
34
35
36
37
38
import re
import timeit
 
from math import sqrt
 
def test1():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    l = [x for x in stream.split()]
    for i in reversed(l):
        a = '%.4f' % sqrt(float(i))
 
def test2():
    stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
 
    p = re.compile('[ \n]')
    l = [x.strip() for x in p.split(stream) if x != '']
    for i in reversed(l):
        a = '%.4f' % sqrt(float(i))
 
print(timeit.timeit("test1()", setup="from __main__ import test1", number=1000000))
print(timeit.timeit("test2()", setup="from __main__ import test2", number=1000000))
+ если если использовать обычный цикл, а не генератор списка, то возможно ещё скорость возрастёт.
0
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
06.07.2015, 22:45
Как то ты быстро ярлыки навешиваешь. По-моему это не быдлокод, а недостаочное знание инструмента, все мы учимся. Вот не знал, что split() без параметров все пробелы и символы переноса строки убирает, просто решал задачу разбиения строки с большим, чем один сепаратором. Тогда уж и твой пример можно быдлокодом обозвать, можно было чуть быстрее сделать вообще без генератора или доп. списка:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from math import sqrt
 
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
for i in reversed(stream.split()):
    print('%.4f' % sqrt(float(i)))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.07.2015, 22:59
Kurles, Я только правил твой код, это не я накатал генераторы и т д, там что на меня стрелки перекинуть пытаться не надо. Выложить без генераторов хотел, просто не посчитал нужным уже.

Кстати, замерял без генераторов, код выполняется 13 сек.
0
06.07.2015, 23:03

Не по теме:

если ты такой перфекционист, то мог бы и поправить. Ладно, закругляемся, полный офтоп пошёл. В любом случае за тыкание носом в split() без параметров благодарен.

0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
07.07.2015, 11:02
Преимущество генератора(цикла) над списком проявляется на больших объемах данных
Python
1
2
3
4
5
6
7
8
9
10
11
from math import sqrt
stream = """
    12 1212  212
    12 323 323 23 23
    212
    232323 2
    3
       323 23 23 23 121
 
    """
print("\n".join('{:.4f}'.format(sqrt(int(num))) for num in reversed(stream.split())))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.07.2015, 11:02
Помогаю со студенческими работами здесь

Для каждого слова в отдельной строке вывести YES если его можно сложить из печенья, и NO если нет
Вот условия задачи И снова знаменитые буквы из печенья поступили в продажу! Их можно не только есть - с ними можно еще и играть. Ваша...

Если число целое,то вывести сумму его цифр,если нет,то вывести корень квадратный из модуля числа
Если число N целое,то вывести сумму его цифр,если нет,то вывести корень квадратный из модуля числа.

Для каждого числа найти корень квадратный, если дробная часть меньше 5, в противном случае найти квадрат данного числа
Даны три положительные действительные числа. Для каждого числа найти корень квадратный, если дробная часть меньше 5, в противном случае...

Для каждого теста в отдельной строке вывести число людей, носящих белые шляпы или -1
Белые шляпы В комнате находится несколько людей. На каждом одета белая или черная шляпа. Каждый человек подсчитывает количество белых...

Найти все числа, для каждого из которых выполняется условие: кубический корень из числа равен сумме его цифр
На заданном числовом промежутке требуется найти все числа, для каждого из которых выполняется условие: кубический корень из числа равен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru