Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2008 11:46:19

Dneprovets
От:
Зарегистрирован: 2008-04-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Есть код:

# coding= utf-8
import string # Импорт текста

 def proga ():
print "Добро пожаловать в программу ReadCrad_ZO_beta_0.1!"
info_card = str( raw_input ("Пожалуйста, проведите карту: ")) # Ввод информации с карты
#info_card = string.upper (info_card)
#string.capswords (info_card) #возможно маленькие буквы
#info_card.encode ("KOI8-R") #кодировка
nst = string.find (info_card, 'B') #ищем начало номера карты
nst = nst + 1 #
nfin = string.find (info_card, '^')#ищем конец номера карты
#number_card номер карты
number_card = info_card [nst:nfin]
# nfam начало фамилии
nfam = nfin + 1 #
# kfam конец фамилии
kfam = string.find (info_card , '/') # номер конца фамилии в промежутке ее начала
# fam фамилия
fam = info_card [nfam:kfam]
fam = string.upper (fam)
print 'Номер карты - ', number_card
print 'Фамилия - ', fam
nach_name = kfam + 1
a_konec_name = string.find (info_card [nach_name:], '^')
b_konec_name = kfam + a_konec_name
b_konec_name = b_konec_name + 1
name = info_card [nach_name:b_konec_name]
name = string.upper (name)
#name.encode ('KOI8-R')
print 'Имя - ', name
#year#
# nach_year - Начало года
nach_year = b_konec_name + 1
#print info_card [nach_year:]
kon_year = nach_year + 2
#print info_card [kon_year:]
year = info_card [nach_year:kon_year]
str = year [:]
print 'Год - ','20'+str
#mounth#
#nmounth - Начало месяца
nmounth = kon_year
kmounth = kon_year+2
mounth = info_card [nmounth:kmounth]
if mounth == ('01') :
mes = 'Январь'
if mounth == ('02') :
mes = 'Февраль'
if mounth == ('03') :
mes = 'Март'
if mounth == ('04') :
mes = 'Апрель'
if mounth == ('05') :
mes = 'Май'
if mounth == ('06') :
mes = 'Июнь'
if mounth == ('07') :
mes = 'Июль'
if mounth == ('08') :
mes = 'Август'
if mounth == ('09') :
mes = 'Сентябрь'
if mounth == ('10') :
mes = 'Октябрь'
if mounth == ('11') :
mes = 'Ноябрь'
if mounth == ('12') :
mes = 'Декабрь'
print 'Месяц - ', mes
#print mes
infa = number_card, '20'+str , mes, name, fam
f = open ('1', 'r+b')
#pickle.dump (mes, f)
f.write (number_card)
f.write (' ')
f.write ('20'+str)
f.write (' ')
f.write (mes)
f.write (' ')
f.write (fam)
f.write (' ')
f.write (name)
f.write (' ')
f.close
#pickle.dump (mes, 2)
choice = raw_input ("Хотите ли вы продолжить? (y/n) : ")
#Продолжить
if choice == "y":
pass #return proga
elif choice == "n":
print "Спасибо за использование программы. Результаты записаны в файл 1.txt"
else :
print "Неправильный ввод!"
Когда весь код не считать def, то есть не представлять его функцией, все работает. Считывается информация с кард-ридера, и выводит нужный результат, но мне нужно, чтобы после вопроса, хотите ли вы продолжить, и ответа ДА, программа возвращалась в начало и еще записывала данные в файл со следующей карты ниже предыдущей. Я совсем новичок, взял маленькую книжку - пытаюсь разобраться, но теперь в полном ступоре, подскажите плиз, как можно реализовать переход в начало программы и запись в тот же файл, но с новой строки! Буду очень благодарен!



Отредактировано (Апрель 14, 2008 12:34:27)

Офлайн

#2 Апрель 14, 2008 11:50:33

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Мама! Роди меня обратно!!! :O



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Апрель 14, 2008 11:54:41

Dneprovets
От:
Зарегистрирован: 2008-04-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Спасибо=(



Офлайн

#4 Апрель 14, 2008 12:17:02

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Мда…
Вы бы почитали-таки про словари там, про правила оформления кода. Программа выглядит ужасно.
Да и тег “code” используйте - непонятно же ничего.
А по поводу литературы - в прикреплённой теме много хороших ссылок, почитайте.
По поводу вопроса - оформляйте как функцию, а потом вызывайте её.

Офлайн

#5 Апрель 14, 2008 12:21:17

Dneprovets
От:
Зарегистрирован: 2008-04-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Да я знаю, что ужасно, я вообще НИКОГДА НИЧЕГО не писал, и про правила особо ничего не знаю, просто очень срочно понадобилось…. Вот после таких комментариев и задумался - а стоит ли?…. Вообще то искал поддержки и замечаний конкретных… Хотя и на том спасибо….



Офлайн

#6 Апрель 14, 2008 12:29:43

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Вам и дали очень конкреное замечание - читайте литературу. Или вы ждали что пережуют и в рот положут?
Работа с функциями - элементарная часть в программировании. Если Вы ее не знаете/понимаете - продолжать нет смысла. Единственное что может помочь -это учебник которых в интернете очень много.
Да, действительно форум - для того что бы помогать. Но Вы задали вопрос, который на форуме математиков звучал бы “Как найти x в выражении y=bx+c”? Это не на форуме нужно спрашивать. Это нужно в книге читать.
А на форум - только если не нашли другого способа.

Офлайн

#7 Апрель 14, 2008 12:35:44

Dneprovets
От:
Зарегистрирован: 2008-04-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

В том то и дело, что перед глазами лежит книга, по ней все это и писалось, но вот именно маленького толчка (то, что Вы называете разжевать и положить в рот) и не хватает… *не сочтите за просьбу*



Офлайн

#8 Апрель 14, 2008 13:16:22

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Все предельно просто.
при оформлении кода функцией она будет выполнятся только тогда когда ее вызывают
допустим:

b=2
a=1+b
print a
Покажет в консоли 3
тогда как
def foo():
b=2
a = 1+b
print a
ничего на экране не покажет. Для того, что бы показало - нужно вызвать саму функцию foo
def foo():
b=2
a = 1+b
print a

foo() # вызываем функцию
Теперь выведет 3.
А лучше функцию оформить так:
def foo(b):
a = 1+b
return a

print foo(3) # вызываем функцию
Тут мы передали функции параметр 3 и вернули значение a. Функция print напечатала возвращённое значение.

Офлайн

#9 Апрель 14, 2008 13:37:37

Dneprovets
От:
Зарегистрирован: 2008-04-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

СПАСИБО ВАМ!!! Теперь все понятно!



Офлайн

#10 Апрель 14, 2008 13:48:43

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Помогите разобраться с def():

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version