Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2011 11:50:07

Nyu Alekseev
От:
Зарегистрирован: 2011-11-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Персональный номер

Добрый день, уважаемые участники форума. У меня возникла проблема с языком Python, точнее не моя специализация это. Я учусь на инженера-нефтяника в Швеции(Стокгольмский Университет, но в данный момент почему то, откуда то не возьмись проходим Python. Решить данную задачу на листе могу, но вот написать программу увы глаза на формулы смотрят по другому. Буду очень рад и благодарен если поможете.

Задание.
Если ты живешь в швеции то у тебя есть собственный Персональный номер состоящий из ГГММДД -ХХХУ (дата рожления ГГММДД) - первые два ХХ-номер выдачи. третья Х пол (если четный то женский, не нечетный - мужской), нужно вычислить У (персональную контрольную цифру) методом Луна

для примера 811218-987у (год рождения, 7 - мужской пол, найти у)
для вычисления используется метод Луна (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9B%D1%83%D0%BD%D0%B0)
sum = 0
for i = 1 to N-1 do
p = Num
if (i mod 2 == 0) then
p = 2*p
if (p > 9) then
p = p - 9
end if
end if
sum = sum + p
next i
//дополнение до 10
sum = (10 - (sum mod 10) mod 10)
Num = sum

8 1 1 2 1 8- 9 8 7у
*2 1 2 1 2 1- 2 1 2= (8*2=16=1+6=7)+1+2+2+2+8+(9*2=18=1+8=9)+8+(14=1+4=5)=44 потом вычитаем с ближайщего десятичного числа, что больше больше 44 - 50, отсюда 50-44=6 контрольное чисчло У = 6
нужно написать программу чтобы когда вводишь это самый П-номер без У он его находил, а еще и показывал день месяц рождения и пол
2дня голову ломал как это все интегрировать…

для пола вроде написал
#for sex
number = input(“Tell me a number: ”)
if number % 2 == 0:
print number, “is woman”
elif number % 2 == 1:
print number, “is man”

Жду помощи, с меня нефть)
(просто впервые в жизни вижу Питон, и не думал что спустя 4 лет обучения на нефтяника столкнусь с ним, спасибо за понимание)



Отредактировано (Ноя. 7, 2011 11:56:35)

Офлайн

#2 Ноя. 7, 2011 13:17:40

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Персональный номер

Ну как-то так:

#!/usr/bin/env python
#-*- coding: utf8 -*-

def split_len(seq, length):
return [seq[i:i+length] for i in range(0, len(seq), length)]

def calc_luhn(data):
ints = [int(i) for i in data if i!='-']
summ = 0
for idx, num in enumerate(ints):
if idx % 2 == 0:
num *= 2
if num > 9:
num -= 9
summ += num
return 10 - summ % 10

def get_info(data):
date_part, info_part = data.split('-')
year, month, day = split_len(date_part, 2)
sex = int(info_part[2])
print '=' * 10
print 'INFO:'
print 'Year: %s' % year
print 'Month: %s' % month
print 'Day: %s' % day
print 'Sex: %s' % ('MALE' if sex % 2 else 'FEMALE')
print '=' * 10

my_num = raw_input('Tell me a number: ')
get_info(my_num)
print 'Luhn number is %d' % calc_luhn(my_num)

Офлайн

#3 Ноя. 9, 2011 09:26:43

Nyu Alekseev
От:
Зарегистрирован: 2011-11-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Персональный номер

Большое спасибо за помощь!)
Рад, что на свете так много хороших людей готовых помочь



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version