英俊男孩建坤 发表于 2020-10-19 23:52:01

大佬教教我

for i in range(1, 4):
    for j in range(1, 6):
      print("*", end = "");
    print( )

这个代码为什么最后会输出 五排五个*?
*****
*****
*****
*****
*****

hrp 发表于 2020-10-19 23:56:37

只有三排啊,你看错参数了吧
>>> for i in range(1, 4):
    for j in range(1, 6):
      print("*", end = "");
    print()

*****
*****
*****
>>>

英俊男孩建坤 发表于 2020-10-20 00:03:36

hrp 发表于 2020-10-19 23:56
只有三排啊,你看错参数了吧

是的我看错了但是能不能给我解释一下为什么会输出这么多*啊   我实在不明白这个代码的意思

porterstudio 发表于 2020-10-20 00:05:44

1. 你的代码有一处错误,Python里表达式结束之后不需要“;”
2. 你的代码输出应该是三排五个“*”, 原因是你的代码有两个循环,内循环里打印五次“*”, 由于指明了打印末尾无符号,故五个“*”会连成一排。外部循环range(1, 4)只循环三次,print()r函数默认在结尾有个换行。
所以最终的结果是输出三排*****

英俊男孩建坤 发表于 2020-10-20 00:07:52

本帖最后由 英俊男孩建坤 于 2020-10-20 00:10 编辑

porterstudio 发表于 2020-10-20 00:05
1. 你的代码有一处错误,Python里表达式结束之后不需要“;”
2. 你的代码输出应该是三排五个“*”, 原因 ...

“;”有这个可以正常输出结果呀参数确实看错了
但是为什么连续打印五个***** 不写成n*“*”的形式   (n指一个数字)      还有那个end有什么作用呀?

hrp 发表于 2020-10-20 00:13:01

本帖最后由 hrp 于 2020-10-20 00:15 编辑

英俊男孩建坤 发表于 2020-10-20 00:03
是的我看错了但是能不能给我解释一下为什么会输出这么多*啊   我实在不明白这个代码的意思

当第一层循环i=1时,执行完整的第二层循环(j=1,2,3,4,5),即打印5次*且不换行(对应代码是print('*', end='')),第二层循环完以后执行到print(),即打印一个换行符;
然后第一层循环到i=2,执行完整的第二层循环(j=1,2,3,4,5),即打印5次*且不换行(对应代码是print('*', end='')),第二层循环完以后执行到print(),即打印一个换行符;

以此类推......

end=''表示print结尾打印一个空字符,不写end=''就是默认end='\n',即结尾打印一个换行符。

英俊男孩建坤 发表于 2020-10-20 00:16:52

hrp 发表于 2020-10-20 00:13
当第一层循环i=1时,执行完整的第二层循环(j=1,2,3,4,5),即打印5次*且不换行(对应代码是print('*', en ...

哦 谢谢呀

英俊男孩建坤 发表于 2020-10-20 00:17:27

hrp 发表于 2020-10-20 00:13
当第一层循环i=1时,执行完整的第二层循环(j=1,2,3,4,5),即打印5次*且不换行(对应代码是print('*', en ...

请问一下这个end = “”有什么用呀?

9360744 发表于 2020-10-20 05:43:04

英俊男孩建坤 发表于 2020-10-20 00:17
请问一下这个end = “”有什么用呀?

建议学的时候多百度,这样记忆会更深刻

hrp 发表于 2020-10-20 07:26:13

英俊男孩建坤 发表于 2020-10-20 00:17
请问一下这个end = “”有什么用呀?

看我上面的回答。
页: [1]
查看完整版本: 大佬教教我