JavaScript循环结构:FOR与WHILE详解

需积分: 9 0 下载量 56 浏览量 更新于2024-08-11 收藏 5KB MD 举报
"循环结构在编程中的重要性和应用" 在编程中,循环结构是不可或缺的一部分,它使得程序员能够高效地处理规律性的重复操作,避免编写大量冗余代码。循环结构主要分为两种基本类型:FOR循环和WHILE循环,它们在JavaScript(js)中都有广泛的应用。 ### FOR循环 FOR循环是一种预定义了初始条件、终止条件和递增/递减步骤的循环。它的语法形式如下: ```javascript for(表达式1;表达式2;表达式3){ 循环体; } ``` - **表达式1**:通常用于初始化循环控制变量,比如设置计数器的初始值。 - **表达式2**:定义循环的条件,只有当该条件为真时,循环才会继续执行。 - **表达式3**:更新循环控制变量,通常是增加或减少计数器的值。 例如,要输出10次“helloworld”,可以使用FOR循环: ```javascript for(var i = 0; i < 10; i++) { console.log('helloworld'); } ``` FOR循环的一个特点是它可以被嵌套,形成多层循环,这在处理二维数组或者矩阵时非常有用,可以形象地理解为行与列的关系。 ### WHILE循环 WHILE循环基于一个条件来决定是否执行循环体内的代码。其语法结构如下: ```javascript while(条件){ 满足条件就执行的代码; } ``` 在使用WHILE循环时,必须确保有一个明确的边界值或退出条件,否则可能会导致死循环,即循环无限制地持续执行下去。 例如,打印数字0到9,可以使用WHILE循环: ```javascript var num = 0; while(num < 10) { console.log(num); num++; } ``` ### 案例解析 在给定的面试题中,我们看到两个FOR循环的例子,它们结合了两个计数器`i`和`v`,在每次迭代中更新`k`的值。第一个例子中,`i`从0递增到5,`v`从0递增到8,因此`k`的最终值取决于`i`和`v`的最后值相加。第二个例子中,`i`每两次递增一次,从0到8,而`v`每次递增1,从0到5,所以`k`的值也会有所不同。 循环结构是编程中解决问题的关键工具,尤其在处理重复任务、遍历数据结构或实现算法时。理解和熟练运用FOR循环和WHILE循环对于编写高效、可读性强的代码至关重要。在实际开发中,还需要注意避免无限循环和合理控制循环复杂度,以提高程序性能。

保留原本功能优化以下代码import pandas as pd import numpy as np import matplotlib.pyplot as plt # 1.读取并查看数据 bike_day = pd.read_csv("C:/Users/15020/Desktop/26.bike_day.csv") print(bike_day.head(5)) # 前5行 print(bike_day.tail(2)) #后2行 #2.处理数据并导出到文件 bike_day_user = bike_day[['instant','dteday','yr', 'casual', 'registered']].dropna() bike_day_user.to_csv('bike_day_user.txt', sep=' ',index=False, header=False) #3.读取数据并添加新列并导出到新文件 bike_day_user = pd.read_csv('bike_day_user.txt', sep=' ', header=None, names=['instant','dteday','yr', 'casual',"registered"]) bike_day_user['cnt'] = bike_day_user['casual'] + bike_day_user['registered'] bike_day_user.to_excel('bike_day_user_cnt.xlsx', index=False) #4.读取数据并进行统计 bike_day_user_cnt = pd.read_excel('bike_day_user_cnt.xlsx') print('cnt最大值:',bike_day_user_cnt['cnt'].max()) print('ent最小值:',bike_day_user_cnt['cnt'].min()) print('2011号cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 0]['cnt'].mean()) print('2012年cnt年平均值:',bike_day_user_cnt[bike_day_user_cnt['yr'] == 1]['cnt'].mean()) print('2011年月严始值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean()) print('2022年月平均值:', bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean()) # 5.可视化并保存图像 fig, ax = plt.subplots() ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 0].groupby('mnth')['cnt'].mean(), color='blue', label='2011') ax.barh(bike_day_user_cnt['mnth'], bike_day_user_cnt[bike_day_user_cnt['yr'] == 1].groupby('mnth')['cnt'].mean(), color='lightblue', label='2012') ax.set_yticks(np.arange(1,13)) ax.set_yticklabels(['Jan','Feb','Mar', 'Apr', 'May','Jun','Jul','Aug', 'sep', 'Oct','Nov','Dec']) ax.set_xlabel('Average number of shared bike users') ax.set_title('Monthly Average Number of Shared Bike Users in 2011-2012') ax.legend() fig.savefig('bike_day_user_cnt.png', dpi=300)

2023-06-03 上传