yjptx121 发表于 2019-12-28 11:10:55

关于while循环的一个小问题

这是我写的一个程序
temp = input("请输入一个整数:")
#
number = int(temp)
#
word = ("**")
#
while number:
#
    j = number-1
#
    while j:
#
      print(word*number)
#      
      j = j-1
#
    print()
#
    number = number-1
#
执行后和我想的不一样,假如输入的数字为5,我认为print(word*number)应该只输出单行5个*,实际输出4行10个*,求大佬解惑

zltzlt 发表于 2019-12-28 11:34:17

楼主的代码太复杂了,试试这段代码:

temp = input("请输入一个整数:")
number = int(temp)
print(number * "*")    # 输出 number 个 *

yjptx121 发表于 2019-12-28 11:42:12

zltzlt 发表于 2019-12-28 11:34
楼主的代码太复杂了,试试这段代码:

多谢回答,我的目的不是输出number个*,我就是想测试一下print(‘word*number’)是否会如我所想的那样输出number个*,但实际结果却是出现number行(number*2)个*,所以就有点不明白了

zltzlt 发表于 2019-12-28 11:47:43

yjptx121 发表于 2019-12-28 11:42
多谢回答,我的目的不是输出number个*,我就是想测试一下print(‘word*number’)是否会如我所想的那样 ...

你的 word 有两个 "*"。

word = ("**")

试试这段代码:

temp = input("请输入一个整数:")
number = int(temp)
word = "*"
while number:
    j = number - 1
    while j:
      print(word * j)
      j = j - 1
    print()
    number = number - 1

yjptx121 发表于 2019-12-28 12:04:01

zltzlt 发表于 2019-12-28 11:47
你的 word 有两个 "*"。

word = ("**")


多谢回复,我是否可以这样理解,在while循环里,j=number-1会一直循环,直到while number为false,例如我输入的是5,那么第一次循环就是:当number为真时,执行word*j,然后number-1,第二次循环执行word*(j-1),number-1-1,第三次执行word*(j-1-1),number-1-1-1以此类推,直到number为假,那么执行结果应该是:
****
***
**
*
可现在执行的结果是:
****
***
**
*

***
**
*

**
*

*
这个不是很懂

zltzlt 发表于 2019-12-28 12:17:56

yjptx121 发表于 2019-12-28 12:04
多谢回复,我是否可以这样理解,在while循环里,j=number-1会一直循环,直到while number为false,例如我 ...

你多了一层循环,其实只要一层 while 循环就足够了:

temp = input("请输入一个整数:")
number = int(temp)
word = "*"
while number:
    print(word * number)
    number = number - 1

yjptx121 发表于 2019-12-28 12:45:12

zltzlt 发表于 2019-12-28 12:17
你多了一层循环,其实只要一层 while 循环就足够了:

受教了,谢谢,现在我明白了
页: [1]
查看完整版本: 关于while循环的一个小问题