详解C语言分支与循环语句
分支语句
- if else
- switch
循环语句
- while
- for
- do while
goto语句
文章目录
- 1.什么是语句
- 2.分支语句(选择结构)
- 2.1 if语句
- 2.1.1 悬空else
- 2.1.3 练习
- 2.2 switch语句
- 2.2.1 在switch语句中的break
- 2.2.2 default子句
- 3.循环语句
- 3.1 while循环
- 3.1.1 while语句中的break和continue
- 3.2 for循环
- 3.2.1 语法
- 3.2.2 break和continue在for循环中
- 3.2.3 for语句的循环控制变量
- 3.2.4 一些for循环的变种
- 3.2.5 试题
- 3.3 do...while()循环
- 3.3.1 do...while()循环语法
- 3.3.2 执行流程
- 3.3.3 do语句的特点
- 3.3.4 do while 循环中的break和continue
- 3.4 习题
- 3.4.3 猜数字游戏
- 4.goto语句
1.什么是语句
在C语言当中语句可以分为以下5类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句符号符组成,C语言有9种控制语句:
1.条件判断语句也叫分支语句:if else 语句 switch语句
2.循环执行语句:for语句 while语句 do while语句
3.转向语句:break语句 continue语句 return语句 goto语句
2.分支语句(选择结构)
这样吧,你先在steam搜索“千恋*万花”点击购买安装好后立即运行打开千恋万花,在主页面点击开始游戏进入游戏页面,然后依次选择“说实话”、“不好说”、“觉得很可爱”、“单独行动”、“摸摸头”、“有点担心”和“安抚”进入丛雨路线
没错,galgame中的选项就是选择语句。

达成对应的条件后就进入对应的结果。
2.1 if语句
if语句的语法结构
//单分支
if(exp1)语句;
//双分支
if(exp1)语句1;
else语句2;//多分支
if(exp1)语句1;
else if(exp2)语句2;
else语句3;
实例演示:
//代码1
#include <stdio.h>
int main()
{int age = 0;scanf("%d",&age);if(age<18){printf("未成年\n");}else{printf("已成年\n");}return 0;
}//代码2
#include <stdio.h>
int main()
{int age = 0;scanf("%d",&age);if(age<18){printf("青少年\n");}else if(age>=18&&age<30){printf("青年\n");}else if(age>=30&&age<60){printf("中年\n");}else if(age>=60&&age<80){printf("老年\n");}else{printf("寿星\n");}return 0;
}
在C语言中0表示假,非0表示真
值得注意的是:If只能管理后面一条语句,所有我们要多用{}进行匹配,防止使人误解.
{}就是一个代码块。
2.1.1 悬空else
看下面这个代码:
#include <stdio.h>
int main()
{int a = 0;if(a)if(a==0)printf("hello\n");elseprintf("hi\n");return 0;
}
你觉得会打印什么呢?
答案是:什么都不打印,这里的else是和第二个if进行匹配的。
为了避免这种情况,我们要让代码好好对齐或者加入{}来避免误解
//代码对齐
#include <stdio.h>
int main()
{int a = 0;if(a)if(a==0)printf("hello\n");elseprintf("hi\n");return 0;
}//利用{}
#include <stdio.h>
int main()
{int a = 0;if(a){if(a==0)printf("hello\n");elseprintf("hi\n");}return 0;
}
else的匹配:else是和离他最近的if匹配的
2.1.3 练习
1.判断一个数是否是奇数。
2.输出1~100之间的奇数。
//1.判断一个数是否是奇数。
#include <stdio.h>
int main()
{int a = 0;scanf("%d",&a);if(a%2==1){printf("是奇数!\n");}else{printf("不是奇数!\n");}return 0;
}//2.2.输出1~100之间的奇数。
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=100){if(i%2==1){printf("%d ",i);}++i;}return 0;
}//方法2
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=100){printf("%d ",i);i+=2;}return 0;
}
2.2 switch语句
switch语句也是一种分支语句,常常用于多分支的情况。
switch(整型表达式)
{case 整型常量表达式://case是整型常量表达式 也可以是char 因为底层为ASCII码也算语句;
}
比如,让你根据数字输出对应的星期。
#include <stdio.h>
int main()
{int day = 0;scanf("%d",&day);switch(day){case 1:printf("星期一\n");case 2:printf("星期二\n");case 3:printf("星期三\n");case 4:printf("星期四\n");case 5:printf("星期五\n");case 6:printf("星期六\n");case 7:printf("星期日\n");}return 0;
}//当我们输入5时
/*
打印结果:
星期五
星期六
星期日
*/
这是为什么呢?因为在switch中我们只有利用了break才能实现真正的分支。
2.2.1 在switch语句中的break
#include <stdio.h>
int main()
{int day = 0;scanf("%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期日\n");break;}return 0;
}
//当我们输入5时
/*
打印结果:
星期五
*/
break语句的实际效果是把语句列表划分为不同的分支部分。
思考:如果有人在这个程序运行时输入8会怎么样?
2.2.2 default子句
答案:当输入的值与所有case都不匹配时,就直接退出switch,然后继续程序。
但是如果你不想要忽略不匹配这种情况。
你可以在语句列表中增加一个default子句。
可以写在任何一个case标签可以出现的位置,switch里面的判断可以没有顺序。
#include <stdio.h>
int main()
{int day = 0;scanf("%d",&day);switch(day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期日\n");break;default:printf("输入错误!\n");break;//建议加上 }return 0;
}
switch允许嵌套使用。
3.循环语句
- while
- for
- do while
简单的循环结构

3.1 while循环
while(条件)语句;
当条件满足时,循环就会执行下去。
while语句执行流程:

打印1-10数字
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=10){printf("%d ",i);i++;}return 0;
}
//打印结果
//1 2 3 4 5 6 7 8 9 10
3.1.1 while语句中的break和continue
break介绍
在循环中只要执行了break,就会直接终止循环,直接跳出循环体。
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=10){if(i==5)break;printf("%d ",i);i++;}return 0;
}
//打印结果
//1 2 3 4
continue介绍
continue是用来终止本次循环的,也就是本次循环中continue后面的代码不会执行,
而是直接跳转到while语句的判断部分。进入下一次循环。
//代码1
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=10){if(i==5)continue;printf("%d ",i);i++;}return 0;
}
//打印结果
//1 2 3 4 4 4 4 4 4 4 4....//代码2
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=10){i++;if(i==5)continue;printf("%d ",i);}return 0;
}
//打印结果
//2 3 4 6 7 8 9 10
3.2 for循环
了解完while循环后,for可以说是while的整合。
3.2.1 语法
for(expr1;expr2;expr3)循环语句;
exp1
为初始化部分,用来初始化循环变量的。
exp2
为条件判断部分,用于判断循环终止的
exp3
为调整部分,用于循环条件的调整。
打印1-10
//代码1
#include <stdio.h>
int main()
{int i = 0;for(i = 1;i<=10;++i){printf("%d ",i);}return 0;
}
//打印结果:1 2 3 4 5 6 7 8 9 10//代码2
#include <stdio.h>
int main()
{for(int i = 1;i<=10;++i)//在里面初始化是c++里的写法,但在c99标准后引入{printf("%d ",i);}return 0;
}
//打印结果:1 2 3 4 5 6 7 8 9 10
for执行流程图

for与while循环的对比
#include <stdio.h>
int main()
{int i = 0;while(i<=10){printf("%d ",i);++i;}for(i = 1;i<=10;++i){printf("%d ",i);}return 0;
}
循环的3个必要条件,无论是while循环还是for都是有的,但是while的三部分比较分散。
查找修改就不够集中于方便,对此,for循环的风格更胜一筹。
3.2.2 break和continue在for循环中
可以发现的是,在for和在while循环里面是没有特别大区别的,但由于for独特的执行调整步骤和while还是略有差异
//continue在while
#include <stdio.h>
int main()
{//利用while循环int i = 1;while(i<=10){if(i==5)continue;printf("%d ",i);i++;}return 0;
}
//打印结果
//1 2 3 4 4 4 4 4 4 4 4....//continue在for循环
#include <stdio.h>
int main()
{//利用for循环int i = 1;for(i = 1;i<=10;++i){if(i==5)continue;printf("%d ",i);}return 0;
}
//打印结果
//1 2 3 4 6 7 8 9 10
for循环里的continue在跳过本次循环时,是无法跳过for()中的调整语句的。
3.2.3 for语句的循环控制变量
建议(不是必须):
1.不要在for循环体内修改循环变量,防止for循环失去控制
2.建议for语句的循环变量的取值采用 前闭后开区间的写法
int i = 0;
//前闭后开
for(i = 0;i<10;++i)
{}
//前闭后闭
for(i = 0;i<=9;++i)
{}
3.2.4 一些for循环的变种
#include <stdio.h>
int main()
{//利用for循环int i = 1;for(;;)//for省略判断即为判断恒为真{printf("hello\n");}//代码2int i = 0;int j = 0;//打印多少个hello呢?for(i = 0;i<10;++i){for(j = 0;j<10;++j){printf("hello\n");}}//100个//代码3int i = 0;int j = 0;//打印多少个hello呢?for(;i<10;++i){for(;j<10;++j){printf("hello\n");}}//10个//代码4 int x,y;for(x = 0,y = 0;x<2&&y<5;++x,++y)//使用多个变量控制循环{printf("hello\n");}return 0;
}
//打印结果
//hello hello hello...
3.2.5 试题
//循环多少次
#include <stdio.h>
int main()
{int i = 0;int k = 0;for(i = 0,k = 0;k=0;++i,++k)k++;return 0;
}//0次
3.3 do…while()循环
3.3.1 do…while()循环语法
do
{循环语句;
}while(表达式);
3.3.2 执行流程

3.3.3 do语句的特点
循环至少执行一次,使用场景有限,不常使用。
打印1-10
#include <stdio.h>
int main()
{int i = 1;do{printf("%d ",i);++i;}while(i<=10);return 0;
}
// 打印结果:
//1 2 3 4 5 6 7 8 9 10
3.3.4 do while 循环中的break和continue
//代码1
#include <stdio.h>
int main()
{int i = 10;do{if(i == 5)break;printf("%d ",i);}while(i<10);return 0;
}//代码2
#include <stdio.h>
int main()
{int i = 10;do{if(i == 5)continue;printf("%d ",i);}while(i<10);return 0;
}
3.4 习题
1.计算n的阶乘
2.计算1!+2!+…+10!
3.在一个有序数组中查找具体某个数n
4.编写代码,演示多个字符从两端移动,向中间汇聚。
//1.
#include <stdio.h>
int main()
{int n = 0;scanf("%d",&n);int ret = 1;for(int i = 1;i<=n){ret*=i;}printf("%d\n",ret);return 0;
}//2.1
#include <stdio.h>
int main()
{int sum = 0;for(int n = 1;n<=10;++n){int ret = 1;for(int i = 1;i<=n;++i){ret*=i;}sum+=ret;}printf("%d\n",sum);return 0;
} //2.2
#include <stdio.h>
int main()
{int sum = 0;int ret = 1;for(int n = 1;n<=10;++n){ret *= n;sum+=ret;}printf("%d\n",sum);return 0;
}//3.1
#include <stdio.h>
int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10};int x = 0;scanf("%d",&x);for(int i = 0;i<10;++i){if(x==arr[i]){printf("找到了,下标为%d\n",i);break;}}if(i==10){printf("没找到!\n");}return 0;
}
//3.2二分查找
#include <stdio.h>
int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10};int x = 0;scanf("%d",&x);int left = 0,right = 9;int flag = 0;while(left<=right){int mid = (left+right)/2;if(arr[mid]==x){printf("找到了,下标为%d\n",mid);flag = 1;break;}else if(arr[mid]<x){left = mid+1;}else{right = mid-1;}}if(flag == 0){printf("找不到!\n");}return 0;
}//4
#include <stdio.h>
int main()
{char arr1[] = "hello world!";char arr2[] = "************";int n = sizeof(arr1);int left = 0;int right = n - 1;for (left = 0, right = n - 1; left <= right; ++left, --right){arr2[left] = arr1[left];arr2[right] = arr1[right];printf("%s\n", arr2);}return 0;
}
3.4.3 猜数字游戏
学以上的内容,我们可以写一个简单的猜谜游戏
#include <stdio.h>
#include <stdlib.h>//srand和rand的头文件
#include <time.h>//time的头文件
void menu()
{printf("**********************\n");printf("*****1.paly***********\n");printf("*****0.exit***********\n");printf("**********************\n");
}
void game()
{int r = rand() % 100 + 1;//rand可以产生随机数,但因为rand的随机数是根据srand所提供的种子生成,所以我们还要使用srand,但是由由于srand所提供的种子也要输入数字才可以生成,为此我在使用了time函数生成当前时间的时间戳数来充当输入的数字,以达到rand生成随机数的效果。int guess = 0;//玩家要猜测的数printf("游戏开始\n");while (1)//直到猜中{scanf("%d", &guess);if (guess < r){printf("猜小了\n");}else if (guess > r){printf("猜大了\n");}else{printf("恭喜你,猜中了!\n");break;}}
}
int main()
{int input = 0;srand((unsigned)time(NULL));do//进入循环{menu();//打印菜单printf("请选择_>");//提示信息scanf("%d", &input);//根据提示选择进入还是退出//根据输入进入相应区域,用到多分支语句switchswitch (input){case 1:game();//进入游戏break;case 0:printf("已退出游戏!\n");break;default:printf("输入错误!\n");break;}} while (input);}
4.goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上来讲goto语句是没有必要的,实际中没有goto语句也可以很容易的写成代码。
但是在某些场合下goto语句还是用的着的,最常见的用法就是终止某些深层嵌套的结构。
例如一次性跳出多层循环。
多重循环下使用break是达不到目的的,break只能从最内层循环退出到上一层循环。
for(...)
{for(...){for(...){if(disaster)goto error;}}
}
error:if(disaster)//处理错误情况
大部分部分使用goto的情况是可以利用循环代替的。
//代码1
#include <stdio.h>
int main()
{
again://...if(...){//...break;}else{goto again;}return 0;
}//代码2
#include <stdio.h>
int main()
{while(1){if(...){//...break;}}return 0;
}
完
相关文章:
详解C语言分支与循环语句
分支语句 if elseswitch 循环语句 whilefordo while goto语句 文章目录 1.什么是语句2.分支语句(选择结构)2.1 if语句2.1.1 悬空else2.1.3 练习 2.2 switch语句2.2.1 在switch语句中的break2.2.2 default子句 3.循环语句3.1 while循环3.1.1 while语句中…...
Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理
Python商务数据分析知识专栏(五)——Python数据分析的应用③使用Pandas进行数据预处理 使用Pandas进行数据预处理1.合并数据2.清洗数据3.标准化数据4.转换数据 使用Pandas进行数据预处理 1.合并数据 2.清洗数据 3.标准化数据 4.转换数据...
Nosql期末复习
mongodb基本常用命令(只要掌握所有实验内容就没问题) 上机必考,笔试试卷可能考: 1.1 数据库的操作 1.1.1 选择和创建数据库 (1)use dbname 如果数据库不存在则自动创建,例如,以下…...
Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置
一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …...
SQL面试题练习 —— 查询前2大和前2小用户并有序拼接
目录 1 题目2 建表语句3 题解 1 题目 有用户账户表,包含年份,用户id和值,请按照年份分组,取出值前两小和前两大对应的用户id,需要保持值最小和最大的用户id排首位。 样例数据 ------------------------- | year | user_id | v…...
Arthas常见使用姿势
文章目录 Arthas常见使用姿势官网基本命令通用参数解释表达式核心变量说明常用命令一些常用特殊案例举例其他技巧关于OGNLOGNL的常见使用OGNL的一些特殊用法与说明OGNL内置的虚拟属性OGNL的个人思考OGNL的杂碎,收集未做验证 Arthas常见使用姿势 官网 https://arth…...
Apache Kylin的入门学习
Apache Kylin的入门学习可以从以下几个方面进行: 1. 了解Kylin的基本概念 定义:Apache Kylin是一个开源的分布式分析引擎,它基于Hadoop和HBase构建,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能…...
React@16.x(46)路由v5.x(11)源码(3)- 实现 Router
目录 1,Router 的结构2,实现2.1,react-router1,matchPath.js2,Router.js3,RouterContext.jsx4,index.jsx 2.2,react-router-domBrowserRouter.jsxindex.jsx 1,Router 的结…...
openGauss真的比PostgreSQL差了10年?
前不久写了MogDB针对PostgreSQL的兼容性文章,我在文中提到针对PostgreSQL而言,MogDB兼容性还是不错的,其中也给出了其中一个能源客户之前POC的迁移报告数据。 But很快我发现总有人回留言喷我,而且我发现每次喷的这帮人是根本不看文…...
【国产开源可视化引擎Meta2d.js】快速上手
提示 初始化引擎后,会生成一个 meta2d 全局对象,可直接使用。 调用meta2d前,需要确保meta2d所在的父容器element元素位置大小已经渲染完成。如果样式或css(特别是css动画)没有初始化完成,可能会报错&…...
c#与倍福Plc通信
bcdedit /set hypervisorlaunchtype off...
【OceanBase诊断调优】—— 如何通过trace_id找到对应的执行节点IP
1. 前言 OceanBase作为分布式数据库,查问题找对节点很关键。好在OceanBase执行的每一条SQL都能通过trace_id来关联起来,知道trace_id怎么知道是在哪个节点发起的呢,请看本文。 2. trace_id生成规则 ob内部trace_id的生成函数如下࿰…...
鸿蒙开发Ability Kit(程序访问控制):【使用粘贴控件】
使用粘贴控件 粘贴控件是一种特殊的系统安全控件,它允许应用在用户的授权下无提示地读取剪贴板数据。 在应用集成粘贴控件后,用户点击该控件,应用读取剪贴板数据时不会弹窗提示。可以用于任何应用需要读取剪贴板的场景,避免弹窗…...
PL/SQL入门到实践
一、什么是PL/SQL PL/SQL是Procedural Language/Structured Query Language的缩写。PL/SQL是一种过程化编程语言,运行于服务器端的编程语言。PL/SQL是对SQL语言的扩展。PL/SQL结合了SQL语句和过程性编程语言的特性,可以用于编写存储过程、触发器、函数等…...
双非本 985 硕,我马上要入职上海AI实验室大模型算法岗
暑期实习基本结束了,校招即将开启。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&…...
C盘清理和管理
本篇是C盘一些常用的管理方法,以及定期清理C盘的方法,大部分情况下都能避免C盘爆红。 C盘清理和管理 C盘存储管理查看存储情况清理存储存储感知清理临时文件清理不需要的 迁移存储 磁盘清理桌面存储管理应用存储管理浏览器微信 工具清理 C盘存储管理 查…...
晚上睡觉要不要关路由器?一语中的
前言 前几天小白去了一个朋友家,有朋友说:路由器不关机的话会影响睡眠吗? 这个影响睡眠嘛,确实是会的。毕竟一时冲浪一时爽,一直冲浪一直爽……刷剧刷抖音刷到根本停不下来,肯定影响睡眠。 所以晚上睡觉要…...
ardupilot开发 --- 坐标变换 篇
Good Morning, and in case I dont see you, good afternoon, good evening, and good night! 0. 一些概念1. 坐标系的旋转1.1 轴角法1.2 四元素1.3 基于欧拉角的旋转矩阵1.3.1 单轴旋转矩阵1.3.2 多轴旋转矩阵1.3.3 其他 2. 齐次变换矩阵3. visp实践 0. 一些概念 相关概念&am…...
git clone 别人项目后正确的修改和同步操作
简介 git clone主要是克隆别人的开源项目。但更高端的操作是实现本地修改的同时,能同步别人的在线修改,并且不相互干扰: 克隆原始项目:从远程仓库克隆项目到本地。添加上游仓库:将原始项目的远程仓库添加为上游仓库。…...
JAVA连接FastGPT实现流式请求SSE效果
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 一、先看效果 真正实流式请求,SSE效果,SSE解释&am…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
