У вас есть файл numbers.txt в котором рандомно записаны числа. Создайте функцию, принимающую в себя имя файла. Функция читает файл и возвращает ответ подобного формата:
Положительных чисел: ...
Отрицательных чисел: ...
Нулей: ...
Целых: ...
Дробных: ....
Чётных: ...
Нечётных: ...
numbers.txt = 40, 8, 1.2, -2, -15, 123.1, -12.2, 151, 1, -5, 0.0, 96.1, 67172, 12.125, -1814, 12, -12, 0, 84.2, 3, 0.5, 15, 1
Python
Задачка на Python
Интересно, автор сей гениальной задачи имеет хоть малейшее представление о машинной арифметике? Выполните в Питоне следующий оператор и скажите, какое число получилось:
В общем, как-то так:
input.txt:
Вывод для этого файла:
print(1.1 + 0.1 - 1.2)
И в какую категорию из перечисленных в задаче его относить: оно целое или дробное? Оно является нулём или нет?В общем, как-то так:
POS_KEY = "Положительных чисел"
NEG_KEY = "Отрицательных чисел"
ZERO_KEY = "Нулей"
INT_KEY = "Целых"
FRAC_KEY = "Дробных"
EVEN_KEY = "Чётных"
ODD_KEY = "Нечётных"
IRRELEVANT = ""
def signum(x): return ZERO_KEY if x == 0 else POS_KEY if x > 0 else NEG_KEY
def reality(x): return INT_KEY if x == int(x) else FRAC_KEY
def oddity(x): return IRRELEVANT if x is float else ODD_KEY if (int(x) & 1) == 1 else EVEN_KEY
def classifyFile(filename):
stat = {
POS_KEY: 0,
NEG_KEY: 0,
ZERO_KEY: 0,
INT_KEY: 0,
FRAC_KEY: 0,
EVEN_KEY: 0,
ODD_KEY: 0,
IRRELEVANT: 0
}
fun = [signum, reality, oddity]
file = open(filename, 'r')
for line in file:
nums = map(float, line.split(", "))
for n in nums:
for f in fun:
stat[f(n)] += 1
return stat
stat = classifyFile("input.txt")
print(*[f"{k:>20}: {stat[k]:3}" for k in stat if len(k) > 0], sep = '\n')
input.txt:
40, 8, 1.2, -2, -15, 123.1, -12.2, 151, 1, -5, 0.0, 96.1
67172, 12.125, -1814, 12, -12, 0, 84.2, 3, 0.5, 15, 1
Вывод для этого файла:
Положительных чисел: 15
Отрицательных чисел: 6
Нулей: 2
Целых: 16
Дробных: 7
Чётных: 14
Нечётных: 9
Владимир Злоказов
Технически их можно проверить. Сейчас напишу решение задачи отдельным ответом.
Виталий Торопов
Поправка к этой функции, а то что-то критерий (x is float) мне не кажется надёжным критерием:
Проверял правильность некоторых значений вручную. Только не знаю относить мне 0.0 к целому или нет. По-нормальному это ноль, но десятичный знак там есть, значит дробь.
positive = negative = zeros = integers = floats = chet = nechet = 0
def go(file):
file = open(file, "r", encoding="utf-8")
mytext = file.read().split(", ")
return mytext
a = go("numbers.txt")
for i in a:
if str(i).find("-"):
positive += 1
else:
negative += 1
if str(i).find(".") >= 0:
i = float(i)
floats += 1
if i == 0.0:
zeros += 1
chet += 1
positive -= 1
else:
i = int(i)
integers += 1
if i == 0:
zeros += 1
chet += 1
positive -= 1
elif int(i) % 2 == 0:
chet += 1
else:
nechet += 1
print("Положительных =", positive)
print("Отрицательных =", negative)
print("Нулей =", zeros)
print("Целых =", integers)
print("Вещественных = ", floats)
print("Чётных =", chet)
print("Нечётных =", nechet)
А тело программы в функцию можешь сам завернуть это не трудно, а то я на это уж и так немало времени потратил. def analyze_numbers(filename):
with open(filename, 'r') as f:
lines = f.read().split(',')
numbers = [float(x.strip()) for x in lines]
positive = len([x for x in numbers if x > 0])
negative = len([x for x in numbers if x < 0])
zeros = len([x for x in numbers if x == 0])
integers = len([x for x in numbers if x.is_integer()])
floats = len([x for x in numbers if not x.is_integer()])
evens = len([x for x in numbers if x % 2 == 0])
odds = len([x for x in numbers if x % 2 != 0])
output = f"Положительных чисел: {positive}\n" \
f"Отрицательных чисел: {negative}\n" \
f"Нулей: {zeros}\n" \
f"Целых: {integers}\n" \
f"Дробных: {floats}\n" \
f"Чётных: {evens}\n" \
f"Нечётных: {odds}"
return output
print(analyze_numbers('numbers.txt'))
Положительных чисел: 12
Отрицательных чисел: 4
Нулей: 2
Целых: 8
Дробных: 10
Чётных: 12
Нечётных: 6
Похожие вопросы
- Задачка по Python
- Помогите решить задачку в Python (!)
- Помогите решите задачку на python
- Помогите пожалуйста с задачкой на Python
- Срочно помогите решить задачки по Python
- Помогите с задачкой на Python
- Окончил курсы на степике по Python что делать дальше?
- Python программирование. Помогите написать программу.
- Нейронные сети на Python 3.4
- Помогите, как сделать авторизацию в программе на python?