Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2014 19:22:02

George_pryanik
Зарегистрирован: 2014-10-26
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

срочно к зачёту!

1. Файл numbersXX содержит записи целых чисел. Каждое число размещается в отдельной строке, завершающейся символом “,” (запятая), за которым следует символ новой строки (“\n”):
314,
212,
269,

2. Написать программу, которая
a. считывает все числа из файла numbersXX ,
b. выводит их на экран в виде:
“Список целых чисел, считанных из файла: …”
c. находит все простые числа в полученном списке,
d. выводит результат на экран в виде:
“Простые числа в списке: …”
Замечание. Использование кириллицы в выводе результата обязательно.

1. Модуль math стандартной библиотеки Python содержит константы π = 3.14…, e = 2.7… . Написать программу, которая
a. получает значение константы π
b. выводит найденное значение на экран в виде:
pi = 3.14…
c. Получает запись числа π в системе счисления по основанию 8 с точностью 4 знака в дробной части числа и выводит результат в виде:
“Число pi в системе счисления по основанию 8: …”
Замечание. Использование кириллицы в выводе результата обязательно.

Офлайн

#2 Дек. 11, 2014 20:34:24

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

срочно к зачёту!

with open('/path/numbersXX') as f:
    nums = [s.rstrip()[:-1] for s in f.readlines()]
print(u'Список целых чисел, считанных из файла: {}'.format(', '.join(nums)))
def is_prime(n):
    if n % 2 == 0 and n > 2: 
        return False
    return all(n % i for i in range(3, int(n**0.5) + 1, 2))
prime_nums = [x for x in nums if is_prime(int(x))]
print(u'Простые числа в списке: {}'.format(', '.join(prime_nums)))
>>> print(u'Список целых чисел, считанных из файла: {}'.format(', '.join(nums)))
Список целых чисел, считанных из файла: 314, 212, 269
>>> print(u'Простые числа в списке: {}'.format(', '.join(prime_nums)))
Простые числа в списке: 269

Офлайн

#3 Дек. 12, 2014 00:37:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

срочно к зачёту!

botinag
nums = [s.rstrip()[:-1] for s in f.readlines()]
nums = [int(s.rstrip()[:-1]) for s in f]
После этого
botinag
prime_nums = [x for x in nums if is_prime(int(x))]
prime_nums = filter(is_prime, nums)
Лучше вывод подогнать под числа, чем числа под вывод. Так как вывод сегодня есть, завтра - нет, а числа будут всегда.



Отредактировано py.user.next (Дек. 12, 2014 00:53:11)

Офлайн

#4 Дек. 12, 2014 08:28:35

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

срочно к зачёту!

py.user.next, ok. Учтём на будущее.

import math
def float_dec_to_oct(num, precision):
    frac, whole = math.modf(num)
    before_point = after_point = ''
    while whole != 0:
        rem = whole % 8
        whole = whole / 8
        before_point += str(int(rem))
    for x in range(precision):
        frac, wh = math.modf(frac * 8)
        after_point += str(int(wh))
    new_num = float('.'.join([before_point[::-1], after_point]))
    return new_num
print(u'pi = {}'.format(math.pi))
print(u'Число pi в системе счисления по основанию 8: {:.4f}'.format(float_dec_to_oct(math.pi, 4)))

>>> print(u'pi = {}'.format(math.pi))
pi = 3.14159265359
>>> print(u'Число pi в системе счисления по основанию 8: {:.4f}'.format(float_dec_to_oct(math.pi, 4)))
Число pi в системе счисления по основанию 8: 3.1103

Стоит отметить, что в моей реализации число не округляется до precision знаков после запятой, а просто откидываются все цифры, начиная с precision+1 после запятой.
Но переписать оригинальную функцию именно для округления - не проблема.

Отредактировано botinag (Дек. 12, 2014 08:43:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version