Найти - Пользователи
Полная версия: как праильно сделать цикл
Начало » Python для экспертов » как праильно сделать цикл
1 2
l-i-m-o-n_1
вот мой код как сделать чтобы он повторялся бесконечно пока не будет сделано определлённое действие:
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 ()
igor.kaist
да сколько можно уже…. неужели трудно почитать какой нибудь учебник???7
while 1: # бесконечный цикл
if что_то: break # если выполнилось условие, то выходим из цикла

# можно еще через переменную
state=True
while state:
if что_то:state=0
bw
while not calc(): pass
Если “определлённое действие” сделано, то calc возвращает True, это вызывает завершение цикла while.

..bw
igor.kaist
только вот это зачем?????
 test=test_1=test_2=test_3=input (u'1 - сложение, 2 - вычитание, 3 - деление, 4 - умножение: '.encode('cp866', "backslashreplace"))
почему не хватает одной переменной test?

bw
Если “определлённое действие” сделано, то calc возвращает True, это вызывает завершение цикла while.
Теперь еще придется объяснять человеку что такое return и с чем его едят :)
crchemist
спочатку так:
# -*- 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()
shiza
немного переделал =)
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() #вызываем функцию
igor.kaist
Можно конечно и еще короче и элегантнее сделать.. Но человек в который раз будет ходить сюда, вместо того чтоб заглянуть в учебник какой нибудь…
crchemist
ось так правильніше
# -*- 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()
shiza
Чет ты завернул прям, для новичка. Он еще не понял ка переменными пользоваться, а ты ему уже методы %)
crchemist
можна і без 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()
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