比德勒科技

微信小程序foreach遍历

日期:2024-08-05 01:45 / 作者:www.biddlecn.com

python 程序的流程控制顺序、选择、循环、跳转、终止与点位

1. 程序的组织结构

2. 顺序结构

3. 选择结构

4. 表达式简写

5. pass空语句

6. 循环结构

7. 跳转语句

程序的组织结构顺序结构选择结构循环结构顺序结构

功能:默认自上而下执行代码

示例:

print('第一行') #第一行print('第二行') #第二行print('第三行') #第三行选择结构

功能:也叫分支结构

程序根据判断条件的布尔值选择性的执行部分代码

布尔类型和比较运算符

布尔数据类型:有两个值

真:True /是 /1 /有假:False/否 /0 /空

比较运算符

== / != / > / < / >= / <=单分支

语法:

if 条件表达式: 执行代码

示例:

a = int(input('请输入一个整数...'))if a > 0: # 对 a > 0 这个表达式做判断,如果是真就执行代码 。 print(a) # 条件为真时,执行的代码。

图示:

python:单分支结构

双分支

语法:

if 条件表达式: 执行代码1:else: 执行代码2

示例:

a = int(input('请输入一个整数...')) # 用户输入数据:15if a > 10: # 输入的数据与10做判断: 15 >10 结果是:真 print(a) # 结果为真,执行这条语句,输出:15else: # 否则 print('你的数字不大于10') # 表达式为真,不执行这条语句

图示:

python 双分支结构

多分支

语法:

if 条件表达式1: 执行代码1elif 条件2: 执行代码2elif 条件3: 执行代码3[ else: ] 执行代码...

示例:成绩判断

grade = int(input('请输入你的成绩...')) # 输入成绩:87if grade >= 90: # 87 >= 90 :不成立 print('优秀') # 不执行elif grade >= 70: # 87 >= 70 :成立 print('良好') # 执行这里的代码:输出:良好,结束判断。elif grade >= 60: print('合格')else: print('成绩不理想')

图示:

python 多分支结构

嵌套

语法:

if 条件1: if 条件2: 代码1 else: 代码2else: if 条件3: 代码3 else: 代码4

示例:入场票价判断,根据年龄大小来判断。

age = int(input('请输入你的年龄...')) # 45if age >= 18: # 45 >= 18 条件成立 if age >= 60: # 再次判断 45 >= 60 条件不成立 print('敬老8折') # 跳过不执行 else: # 执行下面的代码 print('全票入场') # 执行:输出全票入场else: if age >= 12: print('学生半价') else: print('儿童免费')

示例:

python 嵌套结构

表达式简写

功能:可以对:if ... else ... 的简写

# 语法:x if 判断条件 else y

运算规则:

条件布尔值为 True ,返回 x条件布尔值为 False ,返回 y

示例:

a = int(input('请输入数字a:')) # 请输入数字a:10b = int(input('请输入数字b:')) # 请输入数字b:15print('a>b' if a>b else 'a<b') # a<b

pass空语句

占位语句为程序做逻辑架构时,防止程序报错的点位功能循环结构

概念:有选择性的,反复做同一件事情,称为循环

循环范围

# renge()# 内置函数:生成整数序列# 语法:range( x )

示例:range ( x )

a = range(10)print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

示例:range ( x , y )

a = range(0,10)print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

示例:range( x , y , i )

a = range(0,10,2) # 间隔输出成偶数print(list(a)) # [0, 2, 4, 6, 8]

a = range(1,10,2) # 间隔输出成奇数print(list(a)) #[1, 3, 5, 7, 9]

a = range(10,0,-1) # 反转数据print(list(a)) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

a = range(10,0,-1) # 再次反转数据 print(list(a)[::-1]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]while循环

功能:直到条件不成立时退出循环

语法:

while 条件表达式: 执行代码

while 条件成立: 1次 2次 ……

示例:打印0-10的数字

a = 0while a <= 10: # 判断 a <= 10 条件成立,向下执行 print(a,end='|') # 条件成立执行 a += 1 # 条件发生+ 1 的变化# 结果: 0|1|2|3|4|5|6|7|8|9|10|

示例:100的累加

a = 0sum = 0while a < 100: # 判断条件a += 1 # 成立执行sum += a # 修改条件print(sum) # 结果: 5050

示例:猜数字:猜1-100的随机数字,猜中为止,猜时大小有提醒

随机数:imput rand

import random # 导入随机数模块a = random.randint(1,100)count = 0while 1: count += 1 g_num = int(input('请输入数字')) # 输入猜测的数字 if g_num > a: # 判断数字 print(f'猜大啦,第{count}次猜...') # 对大小提醒 continue # 猜大的时候:跳过,回到循环开始 elif g_num < a: print(f'猜小啦,第{count}次猜...') continue # 猜小的时候:跳过,回到循环开始 else: print(f'OK,猜对啦,第{count}次猜...') break # 猜对的时候,终止循环。

图示:

python while循环结构

与if 的区别:if 判断1次,条件为True 执行一行while 判断N+1次,条件为True 执行N次

四步循环法:

初始化变量:判断条件:执行代码(循环体):修改变量:

图示:(初始化变量, 判断条件, 执行代码(循环体), 修改变量)

python 四步循环图

for in 循环

概念:

从那里到那里,是一种轮询的机制,有逐渐的意思相当于对待办事项逐个处理的意思,无法定义循环条件,只能被动取出数据处理for in 遍历的对象必须是可迭代对象in 表示从(字符串,序列等)中依次取值,又称遍历。循环体内不需要访问定义变量时,可将自下定义变量替代为下划线【_】

语法:

for 变量 in 可迭代对象: 循环体

for 临时变量 in 待处理数据集(序列): # 【序列/字符串/列表/元组】 循环满足条件时执行的代码

for _ in 可迭代对象: 循环体

图示:

python for in 循环结构

示例:

for x in range(10): print(x,end='|') # 0|1|2|3|4|5|6|7|8|9|

for _ in 'python': print(_)# p# y# t# h# o# n统计有多少个 a :

a = 'it and root it or hi abc'count = 0for x in a: if x == 'a': count = count+1print(count) # 2水仙花数概念:与他每个数位的3次方之和相等的数。要求:求:100-999之类的的水仙花数有多少 个?

for i in range(100,1000): ge = i%10 shi = i%100//10 bai = i//100 if ge**3+shi**3+bai**3 == i: print(i)# 153# 370# 371# 407嵌套循环:

循环中break 和 continue 用于控制本层循环

图示:

python 循环条件控制语句

示例:

九九乘法表:一

for i in range(1,10): print(f'[第{i}列]') for j in range(1,i+1): print(f'{j}*{i}={i*j:0>2}',end='\t')

九九乘法表:二

i = 1while i <= 9: j = 1 while j <= i: print(f'{j}*{i}={j*i}',end='\t') j += 1 i += 1 print()输出不换行功能end = ' 'end = ' \t '跳转语句:

break:

达到条件:退出整个循环通常与if 一起使用

图示:

python 循环结构break终止

continue:

满足条件:跳过单次循环

图示:

python 循环结构continue跳出

else:与else配合使用的三种情况

图示:

python 循环结构与else配合使用的三种情况

图示总结:

python 程序的流程控制顺序、选择、循环、跳转、终止与点位

微信小程序:优雅处理分页功能

背景

在公司的项目中,分页功能十分常见,以前就是简单的复制粘贴,每次来回切换切面,还经常复制错位置或复制到其他页面去了,半天找不到原因(内心:#*! $%^&@ 1)。

核心思路分页原理:

属性 page来控制分页数,初始值为1;moreFlag有更多数据的标志,初始值为true;pageSize页面自行定义,可以默认设置为10

组件 原生scroll-view或recycle-view,但内容页面定制化(循环detailList)

方法 bindscrolltolower 或 bindscrolltoUpper 调取接口获取更多数据,若结果集中的数据量小于pageSize时,moreFlag更新为false,界面激活“暂无更多”标识;bindrefresherrefresh时刷新重置变量为初始值。

后端接口对接 一般接口都会用Promise异步封装,但一般页面中的请求和处理都各不相同,所以不能作为共同点

getListChangeStatus初始化

getList加载数据

getRemoteList调接口输出处理好的结果集

getList合并结果集

下拉刷新重置pulldownRefresh

混入

复制代码根据上面的分页原理,大都为逻辑处理,所以考虑使用类似Vue里的混入,而在小程序中有一个类似的语法:BehaviorBehavior

behaviors 是用于组件间代码共享的特性,类似于一些编程语言中的 “mixins” 或 “traits”。

每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。 每个组件可以引用多个 behavior ,behavior 也可以引用其它 behavior。

定义Behavior

和组件的配置参数差不多,点击查看详情

注意 即使运用在Page里,方法也需放在methods里;同时注意一下同名字段和生命周期的规则,如下图所示:

以 scroll-view 按照分页原理来定义分页的Behavior

js复制代码module.exports = Behavior({ data: { page: 1, moreFlag: true, detailList: [], refreshFlag: false }, methods: { // 初始化 async getListChangeStatus() { this.setData({ page: 1, detailList: [], moreFlag: true }) await this.getList() }, // 获取列表 async getList() { if (!this.data.moreFlag) { ... // 可以增加处理,例如吐司等 return } let { detailList,fun } = await this.getRemoteList() if (detailList) { let detailListTem = this.data.detailList if (this.data.page == 1) { detailListTem = [] } if (detailList.length < this.data.pageSize) { //表示没有更多数据了 this.setData({ detailList: detailListTem.concat(detailList), moreFlag: false }) } else { this.setData({ detailList: detailListTem.concat(detailList), moreFlag: true, page: this.data.page + 1 }) } // 可能需要一些处理,例如获取容器的高度之类的,又或者scroll-into-view对应id if(fun && fun instanceof Function) fun() } }, // 到达底部 reachBottom() { console.log('--reachBottom--') this.getList() }, // 下拉刷新重置 pullDownRefresh() { this.setData({ page: 1, hasMoreData: true, detailList: [] }) this.getList() setTimeout(() => { this.setData({ refreshFlag: false }) }, 500) } }})引入方法

在页面或组件中(如果页面多个需要分页的地方建议用组件)使用behaviors: [myBehavior]

js复制代码import pagination from '../../behaviors/pagination.js'Page({ data: { pageSize: 10 }, behaviors: [pagination], onShow() { this.getListChangeStatus() }, async getRemoteList() { let { page, pageSize } = this.data const returnObj = {} const res = await XXX // 请求接口 ... // 处理数据 returnObj.detailList = data return returnObj }})

html复制代码<scroll-view scroll-y refresher-enabled refresher-triggered="{{refreshFlag}}" bindrefresherrefresh="pullDownRefresh" bindscrolltolower="reachBottom" style="height:100%;"><!--定义内容--></scroll-view>

(十二)C#编程基础复习——break、continue、goto:跳出循环

在使用循环语句时,并不是必须等待循环完成后才能退出循环,我们也可以主动退出循环,C#为我们提供了break、continue和goto三种方式来跳出循环:

1.break(直接跳出条件循环,后面的程序将不执行)

它不仅可以用来终止switch语句,在循环语句中使用时还可以用来跳出循环,执行循环外的下一条语句。如果是在嵌套循环中使用,例如在内层的循环中使用break语句,那么程序只会跳出内层的循环,并不会影响到外层循环的执行。

代码示例如下:

for (int i = 1; i <= 9; i++){ if (i == 5) { break; } Console.Write("{0}",i);}Console.ReadLine();Console.ReadKey();

运行结果:

图一

2.continue(类似断点,跳出条件循环,但不影响继续执行)

C#中continue语句的工作原理与break语句类似,但是continue语句并不会跳出整个循环,而是跳过本次循环继续执行下一次的循环。

示例代码如下:

for(int i=1;i<=9;i++){ if(i==5) { continue; } Console.Write("{0}", i);}Console.ReadLine();

运行结果:

图二

3.goto(可以跳到指定位置执行语句)

C#中的goto语句也称为跳转语句,使用它可以控制程序跳转到指定的位置执行。不过并不建议在程序中多次使用goto语句,因为它会程序变得更加复杂。在使用goto语句来跳转程序之前,必须先在想要跳转的位置定义好一个标签(labels),标签的名称的定义和变量名相似,然后使用goto标签名;即可使程序跳转到指定位置执行。goto语句并不限于在循环中使用,其他的情况也可以使用,但是,goto语句不能从循环外跳到循环语句中,而且不能跳出类的范围。

示例代码如下:

int count = 1; login: for (int b = 0; b <= count; b++) { Console.WriteLine("第{0}次:请输入用户名", count); string username = Console.ReadLine(); Console.WriteLine("第{0}次:请输入密码", count); string userpwd = Console.ReadLine(); if (username == "admin" && userpwd == "123456") { Console.WriteLine("登录成功"); Console.WriteLine("正在退出"); goto end; } else { break; } } count++; if (count > 3) { Console.WriteLine("用户名或者密码错误次数过多!退出"); } else { Console.WriteLine("用户名或密码错误"); goto login;//返回login标签处重新输入用户名密码; } end: Console.ReadKey();

运行结果:

图三

图四

图五

图六