Как прервать цикл while, когда выполняются два условия - Калькулятор - PullRequest
0 голосов
/ 29 декабря 2018

Я строю свой первый калькулятор.Попытка реализовать цикл While для получения числа через пользовательский ввод.Я хочу, чтобы время сломалось, когда пользователь введет число.

num1 = raw_input("Add mumber one:  " )
try:
  input = int(num1)

except ValueError:
  print "This is not a number"

  attempt = 0
  while type(num1) != int and attempt < 5:
    num1 = raw_input("Add Number one again:  " )
    attempt += 1
  break
  print "You are not putting number. So, goodbuy"



operation = raw_input("Add Operator:  ")

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Другой способ, который вы можете попробовать, - это иметь num1 и выполнять следующие действия в цикле while:

if type(num1) is int:
    break

Для этого нужно проверить тип переменной num1.Если это целое число, int, то оно прерывается из цикла while.

Я хочу, чтобы значение «Вне» разрывалось, когда пользователь вводил число.

Вы уже делаете это в условии для вашего цикла while, имея type(num) != int, поэтому ваш цикл while должен прекратиться после того, как пользователь введет целое число.

0 голосов
/ 29 декабря 2018

Здесь у вас есть несколько ошибок:

while type(num1) != int and attempt < 5:
    num1 = raw_input("Add Number one again:  " )
    attempt += 1
break

Оператор break должен находиться внутри цикла, но отступ не верен.Как вы пишете, это после цикла (следовательно, бесполезно).Кроме того, когда вы читаете из стандартного ввода, вы всегда получаете строку, даже если это число.Поэтому, когда вы проверяете type(num1) != int, это всегда ложно.Вы должны конвертировать num1 с int() каждый раз, когда вы читаете со стандартного ввода, а не только с первого раза:

while True:
    num1 = raw_input("Add Number one again:  " )
    try:
        input = int(num1)
        break
    except ValueError:
        print "This is not a number"
        if attempt == 5:
            break
        attempt += 1

Здесь я пытаюсь преобразовать в целое число строку, прочитанную из stdin.Если это работает, я немедленно разрываю цикл.Если это не работает (исключение), я проверяю, сколько попыток было сделано, и прерываю цикл, если попытки равны 5.

0 голосов
/ 29 декабря 2018

Попробуйте это:

for _ in range(5):
    num1 = unicode(raw_input("Add number one:  "))
    if num1.isnumeric():
        break
...