Найти - Пользователи
Полная версия: Помощь новичку
Начало » Python для новичков » Помощь новичку
1
Mozart
Недавно начал изучать 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()
Спасибо
cutwater
Что естественно, ибо вы пишите глупости.

return возвращает значение и выходит из функции, соответственно до второго return выполнение не доходит.

Сделайте return v, d
И будет Вам счастье
Mozart
Спасибо большое за ответ, сейчас действительно все работает )
Mozart
Ап.

Здравствуйте, по мере изучения сторонних модулей возник такой вопрос, есть код:

# -*- 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")
Архивирует все файлы и каталоги в текущей папке. Такой вопрос - можно ли как нибудь сделать так что скрипт архивировал все файлы частями, т.е. на несколько архивов, ну например по заданному размеру или по количеству архивов?
cutwater
Mozart
Архивирует все файлы и каталоги в текущей папке. Такой вопрос - можно ли как нибудь сделать так что скрипт архивировал все файлы частями, т.е. на несколько архивов, ну например по заданному размеру или по количеству архивов?
Можно. Напишите чтобы он архивировал по заданному размеру или количеству файлов. Подумайте как это можно сделать.
Mozart
В общем долго думал я как можно решить, нашел более менее универсальное решение :

# -*- 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")
Выведет все что есть в директории, потом при подтверждении будет создавать архивы по 200 килобайт меняя их названия (размер можно изменить). =)
Mozart
И снова всем привет, хочу еще раз обратиться, как разбивать архив по размеру я понял, но возникла другая проблема, при запуске скрипта в указанной папке начинает архивироваться все что есть нормально кроме вложенных каталогов, они почему то остаются пустыми, т.е. архивируется только их папка, что я уже только не перепробовал, и проверку на файл/каталог и пробежку через 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")
Если кто нибудь сталкивался с эти подскажите пожалуйста - как можно решить эту проблему ?
Mozart
Неужели никто не знает как это можно сделать?
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