“”三态数是指其立方体以数字本身结尾的数字。
例如:
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)我试着运行代码,并在第22行(最后一行)获得了一个TypeError,尽管为了分割变量,我将变量num_cube转换为字符串。为什么不起作用?
发布于 2018-09-19 00:45:28
应该使用endswith函数检查多维数据集中的最后一个"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发布于 2018-09-19 00:34:08
str(num_cube)没有分配,所以您正在转换它,但是仍然使用num_cube,这是一个int,因此是TypeError。另外,您需要将其与另一个字符串进行比较,而不是将其与num进行比较,后者是另一个整数:
print(str(num_cube)[-3:] == str(num))https://stackoverflow.com/questions/52396291
复制相似问题