Как преобразовать строку в целое число в Python - PullRequest
0 голосов
/ 19 сентября 2018

"" "Триморфное число - это число, куб которого заканчивается самим числом.

Например:

Input: 4
Output: true (4^3 is 64, which ends in 4)

Input: 24
Output: true (24^3 = 13824)

Input: 249
Output: true (249^3 = 15438249)

Напишите программу, чтобы проверить, является ли пользовательский ввод триморфнымномер или нет. "" "

num = int(input("Enter a number:"))
print(num)

num_cube = pow(num, 3)
str(num_cube)
print(num_cube[len(num_cube) - 1:] == num)

Я попытался запустить код, и я получил TypeError в строке 22 (последняя строка), хотя я преобразовал переменную num_cube в строку, чтобы разрезать ее.Почему не работает?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы должны использовать функцию конца с, чтобы проверить, равны ли последние "n" символов в кубе строковому представлению числа, которое вы передали.

Таким образом, вы можете сделать:

print(str(num_cube).endswith(num))

То, как вы сейчас это реализовали, вы «жестко кодируете» ожидаемую длину числа, считываемого с stdin, и, таким образом, предполагаете, что оно всегда будет иметь длину 1.

Чтобы исправить свой код, вы бы сделали следующее:

>>> num = "24"
>>> num_cube = str(pow(int(num), 3))
>>> num_cube[len(num_cube) - len(num):] == num
True
>>> num_cube[-len(num):] == num # negative indexing
True
0 голосов
/ 19 сентября 2018

str(num_cube) не назначен, поэтому вы конвертируете его, но все еще используете num_cube, который является целым числом, следовательно, TypeError.Кроме того, вам нужно сравнить его с другой строкой, а не с num, что является другим целым числом:

print(str(num_cube)[-3:] == str(num))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...