Python3:如何获得等于或低于数字的所有正方形和立方体

时间:2018-07-30 14:31:07

标签: python python-3.x cubes

所以首先这是我应该要做的任务 “第二个编码挑战将是使用while循环来解决这两个条件

给出任何称为极限的数字,我们将找到并打印等于或低于极限的所有平方,因此:

给出30,您的第一个解决方案将打印1,4,9,16,25

第二种解决方案将最多打印多维数据集,因此:

给出30,您的第二个解决方案将打印1,8,2“

reply = True
while reply == True:
    limit = input("Choose any number ")
    if limit.isnumeric():
        limit = float(limit)
        reply = False
    else:
        print("What you have entered is not a number")
        reply = True

number = 1
square = list()
cube = list()
while number > 0:
    squarenumber = number ** 2
    if squarenumber > limit:
        break
    square.append(squarenumber)
    cubenumber = number ** 3
    if cubenumber > limit:
        break
    cube.append(cubenumber)
    number = number+1

print("All the squares below or equal to",limit,"are",*square)
print("All the cubes below or equal to", limit,"are",*cube)

这是我编写的代码,当我输入30作为“ limit”的值时,它会显示

All the squares below or equal to 30.0 are 1 4 9 16
All the cubes below or equal to 30.0 are 1 8 27

所以我不确定我做错了什么

2 个答案:

答案 0 :(得分:1)

number的值变为4时会发生问题。在这种情况下,将计算平方并且条件14 > 30为假(30为limit)。但是随后您继续计算多维数据集,在这种情况下,条件64 > 30为真,因此循环中断。 因此,一种方法是仅当值的平方大于限制时才中断循环。或者,您也可以反转条件(如果小于限制,则仅将正方形和立方体追加到列表中)

reply = True
while reply == True:
    limit = input("Choose any number ")
    if limit.isnumeric():
        limit = float(limit)
        reply = False
    else:
        print("What you have entered is not a number")
        reply = True

number = 1
square = list()
cube = list()
while number > 0:
    squarenumber = number ** 2

    # only append the square if it is less than limit value    
    if squarenumber < limit:
        square.append(squarenumber)
    else:
        break # if the square value is greater than limit, then stop the loop
    cubenumber = number ** 3
    # only append the cube if it is less than limit value 
    if cubenumber < limit:
        cube.append(cubenumber)
    number = number+1

print("All the squares below or equal to",limit,"are",*square)
print("All the cubes below or equal to", limit,"are",*cube)

答案 1 :(得分:0)

检查squarenumbercubenumber的限制无效,因为立方体的增长速度快于正方形。更好的解决方案是检查下一个正方形并收集多维数据集。

这是一个可能的解决方案

limit = 30
number = 1
square = list()
cube = list()
while number > 0:
    squarenumber = number ** 2
    square.append(squarenumber)
    if (number+1) ** 2 > limit:
        break
    cubenumber = number ** 3
    if cubenumber < limit:
        cube.append(cubenumber)

    number = number+1

print('square: {}'.format(square)) #square: [1, 4, 9, 16, 25]
print('cube: {}'.format(cube)) #cube: [1, 8, 27]