Найти - Пользователи
Полная версия: Помогите разобраться с def():
Начало » Центр помощи » Помогите разобраться с def():
1 2
Dneprovets
Есть код:

# 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, то есть не представлять его функцией, все работает. Считывается информация с кард-ридера, и выводит нужный результат, но мне нужно, чтобы после вопроса, хотите ли вы продолжить, и ответа ДА, программа возвращалась в начало и еще записывала данные в файл со следующей карты ниже предыдущей. Я совсем новичок, взял маленькую книжку - пытаюсь разобраться, но теперь в полном ступоре, подскажите плиз, как можно реализовать переход в начало программы и запись в тот же файл, но с новой строки! Буду очень благодарен!
PooH
Мама! Роди меня обратно!!! :O
Dneprovets
Спасибо=(
Ferroman
Мда…
Вы бы почитали-таки про словари там, про правила оформления кода. Программа выглядит ужасно.
Да и тег “code” используйте - непонятно же ничего.
А по поводу литературы - в прикреплённой теме много хороших ссылок, почитайте.
По поводу вопроса - оформляйте как функцию, а потом вызывайте её.
Dneprovets
Да я знаю, что ужасно, я вообще НИКОГДА НИЧЕГО не писал, и про правила особо ничего не знаю, просто очень срочно понадобилось…. Вот после таких комментариев и задумался - а стоит ли?…. Вообще то искал поддержки и замечаний конкретных… Хотя и на том спасибо….
Ferroman
Вам и дали очень конкреное замечание - читайте литературу. Или вы ждали что пережуют и в рот положут?
Работа с функциями - элементарная часть в программировании. Если Вы ее не знаете/понимаете - продолжать нет смысла. Единственное что может помочь -это учебник которых в интернете очень много.
Да, действительно форум - для того что бы помогать. Но Вы задали вопрос, который на форуме математиков звучал бы “Как найти x в выражении y=bx+c”? Это не на форуме нужно спрашивать. Это нужно в книге читать.
А на форум - только если не нашли другого способа.
Dneprovets
В том то и дело, что перед глазами лежит книга, по ней все это и писалось, но вот именно маленького толчка (то, что Вы называете разжевать и положить в рот) и не хватает… *не сочтите за просьбу*
Ferroman
Все предельно просто.
при оформлении кода функцией она будет выполнятся только тогда когда ее вызывают
допустим:
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 напечатала возвращённое значение.
Dneprovets
СПАСИБО ВАМ!!! Теперь все понятно!
ZAN
http://www.openbookproject.net/thinkcs/python/english/ будет полезно
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