-1

请帮忙看下这段代码...

number = 1
while number < 13:
  print("{0} squared = {1}".format(number, number*number))

我不确定为什么循环在运行时没有结束,有人可以帮忙吗?

4

5 回答 5

0

从 python 3.8 开始,您可以使用赋值表达式来修改变量并内联返回新值:

number = 1.01
while number < 13:
    print("{} squared = {}".format(number, number := number*number))

顺便说一句,开始1是个坏主意。

于 2020-04-01T10:58:36.903 回答
0

您正在运行一个无限循环。一个while循环一直执行,直到给定的条件为真。number 不递增。所以你必须每次都增加它。喜欢:number = number**2

于 2020-04-01T10:44:34.423 回答
0

'number' 变量在那个 while 循环中甚至从未改变过。为了真正使“数字”改变值(我假设你每次都想平方它)你需要这样的东西:

number = 1
while number < 13:
  print("{0} squared = {1}".format(number, number*number))
  number = number * number
  #      ^ This actually changes the value of 'number' in each loop

(还要注意,如果你从 1 开始,它永远不会上升:1² = 1)

有点不清楚你想在这里实现什么。您是否想要:

  • 将之前的数字平方得到新的数字?
  • 显示每个数字的平方值,最多 13?
于 2020-04-01T10:44:45.327 回答
0

你可以这样做Python 3.8

number = 1
while number < 13:
    print(f"{number} squared = {((number:=number+1)-1)**2}")

输出:

1 squared = 1
2 squared = 4
3 squared = 9
4 squared = 16
5 squared = 25
6 squared = 36
7 squared = 49
8 squared = 64
9 squared = 81
10 squared = 100
11 squared = 121
12 squared = 144

阅读:PEP-572

于 2020-04-02T22:19:08.693 回答
-1

你的意思:

for number in range(1, 13):
    print("{0} squared = {1}".format(number, number*number))

格式化字符串的最新选项是使用f-strings,因此打印行可能是:

    print(f"{number} squared = {number*number}")
于 2020-04-01T10:43:44.880 回答