Форум сайта python.su
0
Здравствуйте, уважаемые форумчане.
Я являюсь новичком в программирование и поэтому обратился к вам за помощью.
День назад начали изучать язык 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)
Офлайн
857
DeDEg0rЗачем круглые скобки вокруг a, ‘4’ и ‘5’ ?(a)=bazadan={'00': ('4'), '10': ('5')}
DeDEg0rВообще, надо начать со словесного описания алгоритма. Затем нарисовать блок-схему по словесному описанию. Затем написать псевдокод по блок-схеме. И только потом уже писать код по псевдокоду.
Скажите как можно добиться результата 45 или 54 в зависимости что ведет пользователь
Отредактировано py.user.next (Янв. 15, 2015 15:05:03)
Офлайн
103
#-*- 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('второе'))
Отредактировано terabayt (Янв. 15, 2015 01:20:30)
Офлайн
0
terabaytОгромнейшее спасибо!
И тут увидел как сделали вы, лаконично и красиво.Офлайн
103
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))
Отредактировано terabayt (Янв. 16, 2015 13:48:40)
Офлайн