萌新的疑惑:for 循环 为什么print(*)就能打印出星星啊?
真·萌新{:5_92:}for i in range(5):
for j in range(i+1):
print("*"*j,end=" ")
print()
没想明白,为什么这儿 i 不是 * ,print(*)打印出来就是*呢?
是有什么原理吗?
、Python 支持字符串乘法操作:
"*" * 5 = "*****"
所以,print("*"*j) 会连续打印出 j 个 "*" 看仔细了,引号里面的是字符* 引号外面的是乘号* 因为吧,print函数里面是个表达式。
然后你看这个表达式的构成,是字符串,乘号*,和j的乘积,以及一个逗号分割的end=‘’
接着,你要想啊,print的作用是打印出:整数,浮点数,字符串,逻辑数,对象名这些的东西。
那么你这里的字符串,乘号*,和j的乘积是哪一类呢?
当然是字符串啊。所以这个乘积的运算结果就是字符串,那么这个‘乘积’的过程就是对‘*’这个字符串的一个运算。
所以就是后面的一个知识点,作为str类型的数据,你是可以对其使用+和*的运算的,分别对应拼接和复读机的作用:
>>> '计算机'+'二级考试'
'计算机二级考试'
>>> '群里的人都是复读机'*8
'群里的人都是复读机群里的人都是复读机群里的人都是复读机群里的人都是复读机群里的人都是复读机群里的人都是复读机群里的人都是复读机群里的人都是复读机'
当然,这里的j对应的在每次循环中是个整数啊,就像上面的‘’群里的人都是复读机'*8里面的8一样。
总结,这是字符串的运算用法。后面会学到的
第二个 for 循环中的 print() 括号中填的是 ("*" * j, end=" ")
第一个 参数是 "*" 字符串,而字符串乘上一个整数时,意思就是重复拼接几次,例如 "FishC"*3 就是将 FishC重复三次后拼接起来,结果为:"FishCFishCFishC"
同理你的 "*" * j 就是将 "*" 字符串重复 j 次 后拼接,而 end 参数是结束 print 时会追加打印一个 " " 空格,这样就不会换行
for i in range(5):
for j in range(i + 1):
print("*" * j, end=" ")
print() jackz007 发表于 2021-9-17 01:44
、Python 支持字符串乘法操作:
"*" * 5 = "*****"
所以,print("*"*j) 会连续打印出 ...
for i in range(5):
print(*)
这种没有×* 的 ,直接print(*)就能打印出* 啊? Twilight6 发表于 2021-9-17 08:35
第二个 for 循环中的 print() 括号中填的是 ("*" * j, end=" ")
第一个 参数是 "*" 字符串,而字符 ...
for i in range(5):
print(*)
这种没有×* 的 ,直接print(*)就能打印出* 啊? Python初学者8号 发表于 2021-9-17 08:29
因为吧,print函数里面是个表达式。
然后你看这个表达式的构成,是字符串,乘号*,和j的乘积,以及一个 ...
for i in range(5):
print(*)
这种没有×* 的 ,直接print(*)就能打印出* 啊?
我在提问的时候输出错了,应该是不在外面乘那个j的 wsion54197 发表于 2021-9-17 15:36
for i in range(5):
print(*)
这种没有×* 的 ,直接print(*)就能打印出* 啊?
print(*) 只会报错,不会打印 *
print('*') 才会打印 * ,而这里要你打印 * 多次,你直接 print('*')不是只能打印一个吗?
楼主你是连代码都没执行吧,你的代码:
for i in range(5):
print("*")
输出结果:
*
*
*
*
*
而前者代码:
for i in range(5):
for j in range(i + 1):
print("*" * j, end=" ")
print()
输出结果:
*
* **
* ** ***
* ** *** ****
打印效果完全不同
页:
[1]