Найти - Пользователи
Полная версия: Сложить результаты двух функций
Начало » Python для новичков » Сложить результаты двух функций
1
DeDEg0r
Здравствуйте, уважаемые форумчане.
Я являюсь новичком в программирование и поэтому обратился к вам за помощью.
День назад начали изучать язык 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 в зависимости что ведет пользователь
py.user.next
DeDEg0r
(a)=bazadan={'00': ('4'), '10': ('5')}
Зачем круглые скобки вокруг a, ‘4’ и ‘5’ ?

DeDEg0r
Скажите как можно добиться результата 45 или 54 в зависимости что ведет пользователь
Вообще, надо начать со словесного описания алгоритма. Затем нарисовать блок-схему по словесному описанию. Затем написать псевдокод по блок-схеме. И только потом уже писать код по псевдокоду.
terabayt
#-*- 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 страниц книги это мало ;)
DeDEg0r
terabayt
Огромнейшее спасибо!
Неожидал что настолько мне оперативно ответят на форуме, честно сказать думал, что посыпяться упреки.
После того как я задал здесь вопрос и ждал ответа, я все таки достиг своего результата правда с большими потерями. Я получил огромный код с множеством функций и глобальных переменных. Уже хотел закрывать тему и спрашивать, ка же сделать эта все меньше И тут увидел как сделали вы, лаконично и красиво.
Согласен про первые 10 страниц, действительно мало. Но я не могу только читать и запоминать, видимо слишком мало оперативной памяти в голове, проще доходит через руки. Стараюсь сохранять важные отрывки в evernote и анализировать расписывать, что есть что.
Назрел еще один вопрос, если вам не трудно ответьте.
Если мой словарь будет состоять из 1000 значений и складывать мне придется тоже 1000
Получается, что мне проще заменить ‘Первое,Второе ,Третье и т.д’ на 1,2,3,4, и т.д
Т.е если я правильно понял нужно использовать for in range ?
Заранее спасибо.
terabayt
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))
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