Форум сайта python.su
вот мой код как сделать чтобы он повторялся бесконечно пока не будет сделано определлённое действие:
def calc ():
test=test_1=test_2=test_3=input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode('cp866', "backslashreplace"))
if test == 1:
e=input (u'Введите первое число для сложения: '.encode('cp866', "backslashreplace"))
f=input (u'Введите второе число для сложения: '.encode('cp866', "backslashreplace"))
print e+f
raw_input ()
while
if test_1 == 2:
g=input (u'Введите первое число для вычитания: '.encode('cp866', "backslashreplace"))
h=input (u'Введите второе число для вычитания: '.encode('cp866', "backslashreplace"))
print g-h
raw_input ()
if test_2 == 3:
i=input (u'Введите первое число для деления: '.encode('cp866', "backslashreplace"))
j=input (u'Введите второе число для деления: '.encode('cp866', "backslashreplace"))
print i%j
raw_input ()
if test_4 == 4:
k=input (u'Введите первое число для умножения: '.encode('cp866', "backslashreplace"))
l=input (u'Введите второе число для умножения: '.encode('cp866', "backslashreplace"))
print k*l
raw_input ()
Офлайн
да сколько можно уже…. неужели трудно почитать какой нибудь учебник???7
while 1: # бесконечный цикл
if что_то: break # если выполнилось условие, то выходим из цикла
# можно еще через переменную
state=True
while state:
if что_то:state=0
Отредактировано (Ноя. 13, 2008 16:00:37)
Офлайн
while not calc(): pass
Офлайн
только вот это зачем?????
test=test_1=test_2=test_3=input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode('cp866', "backslashreplace"))
bwТеперь еще придется объяснять человеку что такое return и с чем его едят :)
Если “определлённое действие” сделано, то calc возвращает True, это вызывает завершение цикла while.
Отредактировано (Ноя. 13, 2008 16:09:20)
Офлайн
спочатку так:
# -*- coding: utf-8 -*-
def calc ():
test = 1
while test in (1,2,3,4):
test = input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode(
'cp866', "backslashreplace"))
if test == 1:
e=input (u'Введите первое число для сложения: '.encode('cp866', "backslashreplace"))
f=input (u'Введите второе число для сложения: '.encode('cp866', "backslashreplace"))
print e+f
raw_input ()
continue
elif test == 2:
g=input (u'Введите первое число для вычитания: '.encode('cp866', "backslashreplace"))
h=input (u'Введите второе число для вычитания: '.encode('cp866', "backslashreplace"))
print g-h
raw_input ()
continue
elif test == 3:
i=input (u'Введите первое число для деления: '.encode('cp866', "backslashreplace"))
j=input (u'Введите второе число для деления: '.encode('cp866', "backslashreplace"))
print i%j
raw_input ()
continue
elif test == 4:
k=input (u'Введите первое число для умножения: '.encode('cp866', "backslashreplace"))
l=input (u'Введите второе число для умножения: '.encode('cp866', "backslashreplace"))
print k*l
raw_input ()
calc()
# -*- coding: utf-8 -*-
def calc ():
test = 1
while test in (1,2,3,4):
test = input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode(
'cp866', "backslashreplace"))
if test == 1:
e=input (u'Введите первое число для сложения: '.encode('cp866', "backslashreplace"))
f=input (u'Введите второе число для сложения: '.encode('cp866', "backslashreplace"))
print e+f
elif test == 2:
g=input (u'Введите первое число для вычитания: '.encode('cp866', "backslashreplace"))
h=input (u'Введите второе число для вычитания: '.encode('cp866', "backslashreplace"))
print g-h
elif test == 3:
i=input (u'Введите первое число для деления: '.encode('cp866', "backslashreplace"))
j=input (u'Введите второе число для деления: '.encode('cp866', "backslashreplace"))
print i%j
elif test == 4:
k=input (u'Введите первое число для умножения: '.encode('cp866', "backslashreplace"))
l=input (u'Введите второе число для умножения: '.encode('cp866', "backslashreplace"))
print k*l
raw_input ()
calc()
Офлайн
немного переделал =)
def calc ():
#сделаем бесконечный цикл (я надеюсь что 1 == 1 будет всегда)
while 1 == 1:
#можно завести только одну переменную test, я думаю ее хватит на всех =)
#тоже самое касается чисел, над которыми производится действие, x и y будет достаточно
test = input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode('cp866', "backslashreplace"))
if test == 1:
x = input (u'Введите первое число для сложения: '.encode('cp866', "backslashreplace"))
y = input (u'Введите второе число для сложения: '.encode('cp866', "backslashreplace"))
print x+y
if test == 2:
x =input (u'Введите первое число для вычитания: '.encode('cp866', "backslashreplace"))
y =input (u'Введите второе число для вычитания: '.encode('cp866', "backslashreplace"))
print x+y
if test == 3:
x=input (u'Введите первое число для деления: '.encode('cp866', "backslashreplace"))
y=input (u'Введите второе число для деления: '.encode('cp866', "backslashreplace"))
print x+y
if test == 4:
x=input (u'Введите первое число для умножения: '.encode('cp866', "backslashreplace"))
y=input (u'Введите второе число для умножения: '.encode('cp866', "backslashreplace"))
print x+y
calc() #вызываем функцию
Офлайн
Можно конечно и еще короче и элегантнее сделать.. Но человек в который раз будет ходить сюда, вместо того чтоб заглянуть в учебник какой нибудь…
Офлайн
ось так правильніше
# -*- coding: utf-8 -*-
def calc ():
test = 1
msg1 = u'Введите первое число для %s: '.encode('cp866', "backslashreplace")
msg2 = u'Введите второе число для %s: '.encode('cp866', "backslashreplace")
op_msgs = ('сложения', 'вычитания', 'деления', 'умножения')
while test in (1,2,3,4):
test = input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode(
'cp866', "backslashreplace"))
if test == 1:
op = int.__add__
elif test == 2:
op = int.__sub__
elif test == 3:
op = int.__div__
elif test == 4:
op = int.__mul__
else:
break # інакше буде op_msgs[test-1] не пройде
a = input(msg1%op_msgs[test-1])
b = input(msg2%op_msgs[test-1])
print op(a, b)
raw_input ()
calc()
Офлайн
Чет ты завернул прям, для новичка. Он еще не понял ка переменными пользоваться, а ты ему уже методы %)
Офлайн
можна і без if-ів обійтись, але код получається заскладний:
def calc ():
test = 1
msg0 = u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode('cp866', "backslashreplace")
msg1 = u'Введите первое число для %s: '.encode('cp866', "backslashreplace")
msg2 = u'Введите второе число для %s: '.encode('cp866', "backslashreplace")
ops = {1: ('сложения',int.__add__),
2: ('вычитания',int.__sub__),
3: ('деления', int.__div__),
4: ('умножения', int.__mul__)}
while test in (1,2,3,4):
test = input(msg0)
op = ops.get(test, None)
if op is None:
break
a = input(msg1%op[0])
b = input(msg2%op[0])
print op[1](a, b)
raw_input ()
calc()
Отредактировано (Ноя. 13, 2008 16:55:05)
Офлайн