Форум сайта python.su
0
Недавно начал изучать python, дошел до раздела пользовательских функций и застопорился на одном из заданий, там нужно написать решение квадратного уравнения через функцию, просто так я смог его написать, а вот через функцию в упор работать не хочет, подскажите в чем дело пожалуйста.
# -*- coding: cp1251 -*-
import math
print u"Это скрипт для решения квадратного уравнения! Введите значения уравнения"
a = int(raw_input("Press a: "))
b = int(raw_input("Press b: "))
c = int(raw_input("Press c: "))
D = b**2 - 4 * a * c
def kvadrat1(x, y, z):
D = y**2 - 4 * x * z
v = (-y + math.sqrt(D))/2/x
d = (-y - math.sqrt(D))/2/x
return "x1 = ", v
return "x2 = ", d
def kvadrat2(x, y):
m=-y/2/x
return "x = ", m
if D == 0:
print kvadrat2(a, b)
elif D < 0:
print kvadrat1(a, b, c)
else:
print u"Нету решений"
raw_input()
Офлайн
19
Что естественно, ибо вы пишите глупости.
return возвращает значение и выходит из функции, соответственно до второго return выполнение не доходит.
Сделайте return v, d
И будет Вам счастье
Офлайн
0
Спасибо большое за ответ, сейчас действительно все работает )
Офлайн
0
Ап.
Здравствуйте, по мере изучения сторонних модулей возник такой вопрос, есть код:
# -*- coding: cp1251 -*-
import os, tarfile
dir = os.getcwd()
con = os.listdir(dir)
print u"Ваши файлы в директории: ", con
tar = tarfile.open("lol.tar.gz", "w:gz")
d = raw_input("Archive? y/n : ")
if d == "y":
for i in con:
tar.add(i)
print u"Ждите ..."
else:
print u"Ну и не надо"
tar.close()
raw_input("Ok")
Офлайн
19
MozartМожно. Напишите чтобы он архивировал по заданному размеру или количеству файлов. Подумайте как это можно сделать.
Архивирует все файлы и каталоги в текущей папке. Такой вопрос - можно ли как нибудь сделать так что скрипт архивировал все файлы частями, т.е. на несколько архивов, ну например по заданному размеру или по количеству архивов?
Офлайн
0
В общем долго думал я как можно решить, нашел более менее универсальное решение :
# -*- coding: cp1251 -*-
import os, tarfile, sys, time
c = 0
dir = os.getcwd()
con = os.listdir(dir)
print u"Ваши файлы в директории: ", con
tar = tarfile.open("lol0.tar.gz", "w:gz")
d = raw_input("Archive? y/n : ")
if d == "y":
for i in con:
if os.path.getsize("lol"+str(c)+".tar.gz") < 200000L:
tar.add(i)
else:
tar.close()
c += 1
tar = tarfile.open("lol"+str(c)+".tar.gz", "w:gz")
tar.add(i)
sys.stdout.write(u"\r ... Ждите")
sys.stdout.flush()
time.sleep(0.000001)
else:
print u"Ну и вали"
tar.close()
raw_input(" Ok")
Отредактировано (Фев. 11, 2012 17:33:32)
Офлайн
0
И снова всем привет, хочу еще раз обратиться, как разбивать архив по размеру я понял, но возникла другая проблема, при запуске скрипта в указанной папке начинает архивироваться все что есть нормально кроме вложенных каталогов, они почему то остаются пустыми, т.е. архивируется только их папка, что я уже только не перепробовал, и проверку на файл/каталог и пробежку через os.walk, но все равно не выходит, либо отказывается архивировать, либо архивирует сверх нормы, вот одна из моих последних попыток заархивировать все файлы во вложенной папке:
# -*- coding: cp1251 -*-
import os, zipfile, sys, time, zlib
c = 0
dir = os.getcwd()
con = os.listdir(dir)
print u"Ваши файлы в директории: ", con
d = raw_input("Archive? y/n : ")
m = int(raw_input("Press max size (1 mb = 1000000) : "))
def monsterzip(numzipik):
global c, con, dir
zip = zipfile.ZipFile("lol0.zip", mode="w", compression=zipfile.ZIP_DEFLATED)
for i in con:
if os.path.isfile(i) == True:
if os.path.getsize("lol"+str(c)+".zip") < numzipik:
zip.write(i)
else:
zip.close()
c += 1
zip = zipfile.ZipFile("lol"+str(c)+".zip", mode="w", compression=zipfile.ZIP_DEFLATED)
zip.write(i)
sys.stdout.write(u"\r ... Ждите")
sys.stdout.flush()
time.sleep(0.000001)
elif os.path.isdir(i) == True:
joy = os.path.join(dir, i+"\\")
conn = os.listdir(joy)
for nm in conn:
zip.write(nm)
else: continue
raw_input()
if d == "y":
monsterzip(m)
zip.close()
else:
print u"Ок"
raw_input(" Ok")
Офлайн
0
Неужели никто не знает как это можно сделать?
Офлайн