Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2015 00:33:16

DeDEg0r
Зарегистрирован: 2015-01-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сложить результаты двух функций

Здравствуйте, уважаемые форумчане.
Я являюсь новичком в программирование и поэтому обратился к вам за помощью.
День назад начали изучать язык python (читаю книгу от Лутца и параллельно гуглю инфу)
Решил написать программу, которая при вводе пользователя расшифровывает результат и складывает его со следующем расшифрованым результатом.
Пример: Программа спрашивывает “Введите число” человек вводит 00 ( а эта является 4)? Но если такого ключаа в словаре нет программа ругается и просит ввести занова
Потом программа снвоа спрашивает введите второе число человек вводит 10 ( а эта является 5) Но если такого числа нет программа просит занова ввести второе чилсо
И программа выводит результат: 45
Вот мой сценарий:

print('Моя программа')
(a)=bazadan={'00': ('4'), ‘10’: ('5')}
def funcx():
(chislo) = input('Введите первое число')
if chsilo in bazadan:
print (bazadan)
else:
print('Ошибка введите занова')
return (funcx())
(a) = (bazadan)
def funcz() :
(chislo1) = input('Введите второе число')
if chislo1 in bazadan:
(b) = (bazadan)
print ((bazadan))
else:
print ('Ошибка введите второе число занова')
return (funcz())
(funcx())
(funcz())


Прошу помощи. Скажите как можно добиться результата 45 или 54 в зависимости что ведет пользователь

Отредактировано DeDEg0r (Янв. 15, 2015 00:34:44)

Офлайн

#2 Янв. 15, 2015 01:07:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Сложить результаты двух функций

DeDEg0r
(a)=bazadan={'00': ('4'), '10': ('5')}
Зачем круглые скобки вокруг a, ‘4’ и ‘5’ ?

DeDEg0r
Скажите как можно добиться результата 45 или 54 в зависимости что ведет пользователь
Вообще, надо начать со словесного описания алгоритма. Затем нарисовать блок-схему по словесному описанию. Затем написать псевдокод по блок-схеме. И только потом уже писать код по псевдокоду.



Отредактировано py.user.next (Янв. 15, 2015 15:05:03)

Офлайн

#3 Янв. 15, 2015 01:18:32

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Сложить результаты двух функций

#-*- coding: utf-8 -*-
print('Моя программа')
bazadan={'00': ('4'), '10': ('5')}
def funcx():
    chislo = input('Введите первое число')
    if chislo in bazadan:
        print (bazadan)
    else:
        print('Ошибка введите занова')
        return funcx()
    return bazadan[chislo]
def funcz() :
    chislo1 = input('Введите второе число')
    if chislo1 in bazadan:
        print (bazadan)
    else:
        print('Ошибка введите второе число занова')
        return funcz()
    return bazadan[chislo1]
print(funcx() + funcz())
вот мое решение
print('Моя программа')
bazadan={'00': '4', '10': '5'}
def func(s):
    while True:
        chislo = input('Введите %s число' % s)
        if chislo in bazadan: return bazadan[chislo]
        print('Ошибка введите занова')
print(func('первое') + func('второе'))
и читайте дальше! первые 10 страниц книги это мало ;)



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Янв. 15, 2015 01:20:30)

Офлайн

#4 Янв. 15, 2015 20:07:00

DeDEg0r
Зарегистрирован: 2015-01-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Сложить результаты двух функций

terabayt
Огромнейшее спасибо!
Неожидал что настолько мне оперативно ответят на форуме, честно сказать думал, что посыпяться упреки.
После того как я задал здесь вопрос и ждал ответа, я все таки достиг своего результата правда с большими потерями. Я получил огромный код с множеством функций и глобальных переменных. Уже хотел закрывать тему и спрашивать, ка же сделать эта все меньше И тут увидел как сделали вы, лаконично и красиво.
Согласен про первые 10 страниц, действительно мало. Но я не могу только читать и запоминать, видимо слишком мало оперативной памяти в голове, проще доходит через руки. Стараюсь сохранять важные отрывки в evernote и анализировать расписывать, что есть что.
Назрел еще один вопрос, если вам не трудно ответьте.
Если мой словарь будет состоять из 1000 значений и складывать мне придется тоже 1000
Получается, что мне проще заменить ‘Первое,Второе ,Третье и т.д’ на 1,2,3,4, и т.д
Т.е если я правильно понял нужно использовать for in range ?
Заранее спасибо.

Офлайн

#5 Янв. 16, 2015 13:38:46

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Сложить результаты двух функций

DeDEg0r
Т.е если я правильно понял нужно использовать for in range ?
и да и нет
print('Моя программа')
bazadan={'00': '4', '10': '5'}
def func(n, s=''):
    for i in range(n):
        while True:
            chislo = input('Введите %d число' % (i+1))
            if chislo in bazadan: break
            print('Ошибка введите занова')
        s += bazadan[chislo]
    return s
print(func(2))
или так
print('Моя программа')
bazadan={'00': '4', '10': '5'}
def func(n, s='', i=0):
    while True:
        chislo = input('Введите %d число' % (i+1))
        if chislo in bazadan:
            s += bazadan[chislo]
            i += 1
        else: print('Ошибка введите занова')
        if i == n: return s
print(func(2))
а можно и так
print('Моя программа')
bazadan={'00': '4', '10': '5'}
def func(n, s=[]):
    while len(s) < n:
        chislo = input('Введите %d число' % (len(s)+1))
        s.append(bazadan[chislo]) if chislo in bazadan else print('Ошибка введите занова')
    return ''.join(s)
print(func(2))



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Янв. 16, 2015 13:48:40)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version