Сравнение чисел с while l oop. Python 3.8.3 - PullRequest
0 голосов
/ 06 августа 2020

В настоящее время я новичок в Python и пытаюсь создать программу, которая принимает два целых числа и выводит, больше ли они, меньше друг друга или оба равны. Я также хочу добавить while l oop, которое каждый раз запрашивает еще 2 набора целых чисел, иначе, если пользователь наберет «выйти», программа завершится. Единственная проблема в том, что я думаю, что мой кастинг отключен, потому что когда я печатаю quit, он фактически сравнивает это. Так что, если я дважды наберу «quit», программа покажет, что они равны, что верно, а не остановит программу.

onenumber = int(input("Please enter your first number to compare:"))

twonumber = int(input("Please enter your second number to compare:"))


if onenumber > twonumber:
    print (onenumber, "is the biggest!")
                            
elif twonumber > onenumber:
    print (twonumber, "is the biggest!")

else:
    print ("Both are equal!")


while onenumber != "quit":

    onenumber = input("Please enter your first number to compare, or type quit:")
    twonumber = input("Please enter your second number to compare:")    


    if onenumber > twonumber:
        print (onenumber, "is the biggest!")                           
    elif twonumber > onenumber:
        print (twonumber, "is the biggest!")
    else:
        print ("Both are equal!")

Ответы [ 3 ]

0 голосов
/ 06 августа 2020

Я немного изменил ваш код, чтобы начать с oop. В идеале вам нужно как можно меньше строк кода, и поскольку у вас были две повторяющиеся строки, я удалил их.

Теперь, когда обе числовые переменные не приводятся как int, мы можем использовать встроенную строковую функцию .isdigit() который возвращает True или False, если переменная - di git. Это помогает нам, гарантируя, что при их сравнении не будет ошибок.

С радостью ответим на любые ваши вопросы!

while True:
    number_one = input("Please enter your first number to compare or type 'quit':")
    number_two = input("Please enter your second number to compare:")

    if number_one.isdigit() and number_two.isdigit():
        number_one = int(number_one)
        number_two = int(number_two)

        if number_one > number_two:
            print(number_one, "is the biggest!")
        elif number_two > number_one:
            print(number_two, "is the biggest!")
        else:
            print("Both are equal!")
    elif number_one == "quit":
        print("Thanks for playing!")
        exit()
    else:
        print("Please enter a number or type 'quit'!")
0 голосов
/ 06 августа 2020

Проще просить прощения, чем разрешения.

https://docs.python.org/3.4/glossary.html

number_1 = input("Please enter your first number to compare or type 'quit':")
number_2 = input("Please enter your second number to compare:")

try:
    smaller = int(number_1) < int(number_2)
    same = int(number_1) is int(number_2)
    if smaller:
        print(number_1, "is the smaller")
    else:
        print(number_2, "is the biggest")
    if same:
       print("Both are equal")

except ValueError:
    if number_1 == "quit"
       print("Thanks for playing!")

0 голосов
/ 06 августа 2020

На самом деле ваша программа делает именно то, что должна делать. Но подумайте об этом, ваше условие гласит: пока onenumber не "quit", выполните все команды внутри while l oop. Таким образом, если ваша переменная onenumber - «выйти», она все равно выполнит сравнение еще ОДИН РАЗ, прежде чем завершит программу. Но после этого ваша программа остановится. Но, очевидно, этого не произойдет, потому что произойдет исключение. Вы можете проверить это с помощью кода ниже:

number1 = "proceed"
while number1 != 'quit':
      number1 = str(input("declare number1"))
      number2 = str(input("declare number2"))

      try:
         if int(number1) > int(number2):
            print("number1 is is bigger than number2")
         elif int(number1) < int(number2):
            print("number2 is bigger than number1")
         else:
            print("both numbers are equal")
      except:
            pass

Одно из решений, например, без обработки исключений, будет следующим:

number1 = "proceed"
while number1 != 'quit':
      number1 = str(input("declare number1"))
      number2 = str(input("declare number2"))


      if number1 != 'quit':
          if int(number1) > int(number2):
              print("number1 is is bigger than number2")
          elif int(number1) < int(number2):
              print("number2 is bigger than number1")
          else:
              print("both numbers are equal")
...