“”“ 三态数是一个数字,其立方体以数字本身结尾。
例如:
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)
我尝试运行代码,尽管将变量num_cube转换为字符串以对其进行切片,但在第22行(最后一行)却遇到TypeError。为什么它不起作用?
答案 0 :(得分:0)
str(num_cube)
未分配,因此您正在转换它,但仍使用num_cube
这是一个整数,因此使用TypeError
。另外,您需要将其与另一个字符串进行比较,而不是与另一个整数num
进行比较:
print(str(num_cube)[-3:] == str(num))
答案 1 :(得分:0)
您应该使用endswith函数检查多维数据集中的最后“ n”个字符是否等于所传递数字的字符串表示形式。
您可以这样做:
print(str(num_cube).endswith(num))
您当前实现它的方式,是对从标准输入中读取的数字的预期长度进行“硬编码”,并因此假定其始终为长度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