【问题标题】:Python3: How to get all the squares and cubes equal or below the numberPython3:如何让所有的正方形和立方体都等于或小于数字
【发布时间】:2018-07-30 14:31:07
【问题描述】:

首先这是我应该完成的任务 "第二个编码挑战将使用 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 作为“限制”的值时,它显示

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

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

【问题讨论】:

  • while reply == True: - 如果表达式的计算结果为布尔值,则不应在 while 语句中比较 TrueFalse,只需写 while reply:
  • 确实,这将算作一种良好的编程习惯。以前的代码看起来更容易理解(从新手的角度来看)

标签: python python-3.x cubes


【解决方案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)

【讨论】:

    【解决方案2】:

    检查 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]
    

    【讨论】:

      猜你喜欢
      • 2015-04-04
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多