今天学习了for语句和range语句,for语句通常用于循环遍历某个待处理的数据集,而range语句则是生成一个左闭右开的数字集合区间,两者结合可以完成一些简单的需求,比如:
total = 0
for i in range(1,101):
if i % 2 == 1:
total += i
print('1-100的奇数和:',total)
上面的代码块是利用for语句和range语句计算1-100的奇数,然而这个代码块还有更简化的写法如下:
total = 0
for i in range(1,101,2):
total += i
print('1-100的奇数和:',total)
此处利用了range语句中的步长代替了if语句的判定作用,直接筛选出了1-100的所有奇数。
在while和for语句学习完后就进入了嵌套语句的学习,这里还是有很多小细节需要注意的,接下来展示一个需求:
打印一个长度为m,宽度为n的横着的长方形,这里就可以使用两个for语句的嵌套完成。
第一步当然是让用户在键盘上输入m和n:
m = int(input('请输入长方形的长度:'))
n = int(input('请输入长方形的宽度:'))
注:之后默认m = 10,n = 5
接下来就涉及到对嵌套语句的理解了,我一开始自以为理解了嵌套语句进行练习后却对教程所敲的完整的代码块难以理解,我认为宽度的for语句应当嵌套在长度的for语句之下,如下:
m = int(input('请输入长方形的长度:'))
n = int(input('请输入长方形的宽度:'))
for i in range(m):
for j in range(n):
print('*', end=' ')
print()
然而当我得到输出结果后却发现长方形与教程所示长方形不同,生成结果为一个竖着的长方形:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
经过我自己慢慢地钻研以及对 DeepSeek 的询问后,我发现我的思路和教程的思路其实都没有任何问题。之所以我会认为存在问题,是因为对循环理解不够深刻。外层的 for 语句循环一次,内部的 for 语句就要循环 n 次。当我分别规定 m 是长度、n 是宽度时,如果宽度的 for 语句作为外层循环,那么当 n 是 5、m 是 10 时,意味着一行十个间距为两个空格的“*”生成五次,这样才会得到如教程所示的横着的长方形,完整代码如下:
m = int(input('请输入长方形的长度:'))
n = int(input('请输入长方形的宽度:'))
for j in range(n):
for i in range(m):
print('*', end=' ')
print()
当 m = 10、n = 5 时,生成结果如下:
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
两个代码块本质没有任何区别,只因为我对嵌套循环的理解不够深刻才会出现疑惑。现在解决了,特此记录以鼓励自己,真棒。
网硕互联帮助中心





评论前必须登录!
注册