улучшения в коде

1

Введите число с двумя цифрами: 10

введите другое целое число: 1

1 - обратная сторона: 10

Мой код

from pcinput import getInteger


minimum_len = 2
number1 = getInteger("enter a number with only two digits: ")
input_length = int(len(str(number1)))

if input_length < minimum_len: 
    print("needs to be 2 digits" )
    exit(1)
elif not isinstance(number1, int):
    print("needs to be a int")

else: 
     number2 = input("enter another integer: ")

def reverse_int(number1):
    return int(str(number1)[::-1])

if number1 == number2:
    print(str(number1) + " is the reverse of "+ (str(number2 )))
else:
    print(str (number2) + " is not the reverse of " + (str(number1)))
Теги:
python-3.x

3 ответа

2
Лучший ответ

Вы не вызываете функцию reverse_int любом месте.

- if number1 == number2:
+ if number1 == reverse_int(number2):
  • 0
    Вау, спасибо, я слишком долго смотрел свой код, что упустил такую легкую ошибку.
1

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

Аналогичным образом вы можете избегать строк при изменении цифр:

def reverse(number):
    tens = number // 10
    ones = number % 10
    return 10 * ones + tens

Тогда все, что вам нужно сделать, это обратить одно из чисел:

if number2 == reverse(number1):
    print("{0} is the reverse of {1}".format(number2, number1))
  • 0
    Я замечаю, что если я введу число, подобное 4, то получится 40, что делает оператор if then else неправильным ответом, поскольку 4 - обратное значение 4 @SpacedMonkey
  • 0
    если 1 - обратное 10, то 4 - обратное 40. Вот почему первое число должно иметь 2 цифры, и поэтому я переворачиваю это число.
1

Из того, что я понимаю, если вы меняете 10, вы получите 01. И в программировании 01 нет числа, поэтому число просто равно 1. Если бы я был вами, я бы также проверил длину номера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню