51单片机第7步_ctype.h库函数

本章重点学习ctype.h库函数

//介绍C51库函数ctype.h的使用;

#include <REG51.h>  //包含头文件REG51.h,使能51内部寄存器;

#include <ctype.h>

//bit isalpha( unsigned char value );

//检查输入参数value是否为英文字母,若是英文字母,则返回1,若不是英文字母,则返回0;

//bit isalnum(unsigned char value);

//检查输入参数value是否为英文字母或数字字符,若是英文字母或数字字符,则返回1;

//若不是英文字母或数字字符,则返回0;

//bit iscntrl (unsigned char value);

//控制字符的值域:0x00<=value<=0x1f或value=0x7f;

//若输入参数value为控制字符,则返回1,否则,返回0;

//isgraph (unsigned char value);

//"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

//若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

//isprint (unsigned char value);

//"打印字符"的值域:0x20<=value<=0x7e,包含空格字符值0x20;

//若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

//bit ispunct(unsigned char);

//输入参数:标点,空格或格式字符号;

//标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

//左右小括号( () ),左右中括号([]),左右大括号({});

//格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

//相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

//英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

//若输入参数为空格或32个标点和格式字符之一,则返回1;

//bit isdigit(unsigned char value);

//若输入字符为0~9的ascii码,则返回1,否则返回0;

//bit islower(unsigned char value);

//若输入参数value为小写英文字母,则返回1,否则返回0;

//bit isupper (unsigned char value);

//若输入参数value为大写英文字母,则返回1,否则返回0;

//bit isspace (unsigned char value);

//输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

//回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

//若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

//bit isxdigit (unsigned char value);

//输入参数:'0'~'9'或'A'~'F'或'a'~'f';

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

//unsigned char toint (unsigned char value value);

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

//unsigned char tolower (unsigned char value);和_tolower(c);

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

//_tolower(c)相当于( (c)-'A'+'a' );

//unsigned char toupper (unsigned char value);和_toupper(c);

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' );

//toascii(c);相当于( (c) & 0x7F );

//将第7位以上的所有位设置为0,使其结果值<=127,即为ascii码,不常使用;

//若输入参数为字节型数据,则只将最高位设置为0;

#include <stdio.h>  //包含头文件stdio.h

                    //_getkey();从串口读入一个字符;

                    //putchar();向串口发送一个字节;

                    //printf();向串口发送一串字节;

//函数功能:测试isalpha()函数;

void test_isalpha()

{ char s[]="a$bcd";

  if( isalpha(s[0]) )  //若输入参数是英文字母,则执行下面语句;

     printf( "isalpha('a')=1;\n" );  //输出:"isalpha('a')=1;"

  if( !isalpha(s[1]) )  //若输入参数不是英文字母,则执行下面语句;

     printf( "isalpha('$')=0;\n" );  //输出:"isalpha('$')=0;"

}

//函数功能:测试isalnum()函数;

void test_isalnum()

{ char s[]="b1#23acd";

  if( isalnum(s[0]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('b')=1;\n" );  //输出:"isalnum('b')=1;"

  if( isalnum(s[1]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('1')=1;\n" );  //输出:"isalnum('1')=1;"

  if( !isalnum(s[2]) )  //若输入参数既不是英文字母也不是数字字符,则执行下面语句;

     printf( "isalnum('#')=0;\n" );  //输出:"isalnum('#')=0;"

}

//函数功能:测试iscntrl()函数;

void test_iscntrl()

{ unsigned char value;

  bit return_bit_value;

  value=0x7f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

                               //控制字符的值域:0x00<=value<=0x1f或value=0x7f;

  if(return_bit_value) printf( "iscntrl(0x7f)=1;\n" );  //输出:"iscntrl(0x7f)=1;"

  value=0x1f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x1f)=1;\n" );  //输出:"iscntrl(0x1f)=1;"

  value=0x00;

  return_bit_value=iscntrl(value);  //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x00)=1;\n" );  //输出:"iscntrl(0x00)=1;"

  value=0x20;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(!return_bit_value) printf( "iscntrl(0x20)=0;\n" );  //输出:"iscntrl(0x20)=0;"

}

//函数功能:测试isgraph()函数;

void test_isgraph()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isgraph(value);

     //若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

     //"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

  if(return_bit_value) printf( "isgraph(0x7e)=1;\n" );  //输出:"isgraph(0x7e)=1;"

  value=0x21;

  return_bit_value=isgraph(value);

  if(return_bit_value) printf( "isgraph(0x21)=1;\n" );   //输出:"isgraph(0x21)=1;"

  value=' ';

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x20)=0;\n" );  //输出:"isgraph(0x20)=0;"

  value=0x7f;

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x7f)=0;\n" );   //输出:"isgraph(0x7f)=0;"

}

//函数功能:测试isprint()函数;

void test_isprint()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isprint(value);

     //若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

     //可打印字符的值域:0x20<=value<=0x7e,包含空格字符值0x20;

  if(return_bit_value) printf( "isprint(0x7e)=1;\n" );//输出:"isprint(0x7e)=1;"

  value=' ';

  return_bit_value=isprint(value);

  if(return_bit_value) printf( "isprint(0x20)=1;\n" );   //输出:"isprint(0x20)=1;"

  value=0x7f;

  return_bit_value=isprint(value);

  if(!return_bit_value) printf( "isprint(0x7f)=0;\n" );  //输出:"isprint(0x7f)=0;"

}

//函数功能:测试isdigit()函数;

void test_isdigit()

{ unsigned char value;

  bit return_bit_value;

  value='0';

  return_bit_value=isdigit(value);  //若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(return_bit_value)printf( "isdigit('0')=1;\n" );  //输出:"iscntrl('0')=1;"

  value=0;

  return_bit_value=isdigit(value);//若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(!return_bit_value)printf( "isdigit(0)=0;\n" ); //输出:"iscntrl(0)=0;"

}

//函数功能:测试ispunct()函数;

void test_ispunct()

{ unsigned char value;

  bit return_bit_value;

  value='~';

  return_bit_value=ispunct(value);

    //输入参数:标点,空格或格式字符号;

    //标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

    //左右小括号( () ),左右中括号([]),左右大括号({});

    //格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

    //相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

    //英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

    //若输入参数为空格或32个标点和格式字符之一,则返回1;

  if(return_bit_value)printf( "ispunct('~')=1;\n" );  //输出:"ispunct('~')=1;"

  value='`';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('`')=1;\n" );   //输出:"ispunct('`')=1;"

  value='@';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('@')=1;\n" );  //输出:"ispunct('@')=1;"

  value=' ';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct(' ')=1;\n" );  //输出:"ispunct(' ')=1;"

}

//函数功能:测试islower()函数;

void test_islower()

{ unsigned char value;

  bit return_bit_value;

  value='a';

  return_bit_value=islower(value);

      //若输入参数value为小写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "islower('a')=1;\n" ); //输出:"islower('a')=1;"

  value='A';

  return_bit_value=islower(value);

  if(!return_bit_value)printf( "islower('A')=0;\n" );//输出:"islower('A')=0;"

}

//函数功能:测试isupper()函数;

void test_isupper()

{ unsigned char value;

  bit return_bit_value;

  value='B';

  return_bit_value=isupper(value);

   //若输入参数value为大写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "isupper('B')=1;\n" );

  value='b';

  return_bit_value=isupper(value);

  if(!return_bit_value)printf( "isupper('b')=0;\n" );

}

//函数功能:测试isspace()函数;

void test_isspace()

{ unsigned char value;

  bit return_bit_value;

  value='\t'; //将水平制表符(0x09,即'\t')保存到value中;

  return_bit_value=isspace(value);

  //输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

  //回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

  //若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

  if(return_bit_value)printf( "isspace(0x09)=1;\n" );

  value='\n';   //换行符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0a)=1;\n" );

  value='\v';   //垂直制表符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0b)=1;\n" );

  value='\f';   //换页符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0c)=1;\n" );

  value='\r';   //回车符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0d)=1;\n" );

  value=' ';   //空格符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(' ')=1;\n" );

}

//函数功能:测试isxdigit()函数;

void test_isxdigit()

{ unsigned char value;

  bit return_bit_value;

  value='A';

  return_bit_value=isxdigit(value);

 //若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

  if(return_bit_value)printf( "isxdigit('A')=1;\n" );

  value='a';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('a')=1;\n" );

  value='0';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('0')=1;\n" );

  value='f';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('f')=1;\n" );

  value='G';

  return_bit_value=isxdigit(value);

  if(!return_bit_value)printf( "isxdigit('G')=0;\n" );

}

//函数功能:测试toint()函数;

void test_toint()

{ unsigned char return_bit_value;

  return_bit_value=toint('9');

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

  printf("toint('9')=%#bx\n",return_bit_value);  //输出:"toint('9')=0x09;"

  return_bit_value=toint('A');

  printf("toint('A')=%#bx\n",return_bit_value); //输出:"toint('A')=0x0a;"

  return_bit_value=toint('a');

  printf("toint('a')=%#bx\n",return_bit_value);   //输出:"toint('a')=0x0a;"

}

//函数功能:测试tolower()函数;

void test_tolower()

{ unsigned char return_bit_value;

  return_bit_value=tolower('A');

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

  printf("tolower('A')=%c\n",return_bit_value);

  return_bit_value=_tolower('Z');   //相当于( (c)-'A'+'a' )

  printf("_tolower('Z')=%c\n",return_bit_value);

}

//函数功能:测试toupper()函数;

void test_toupper()

{ unsigned char return_bit_value;

  return_bit_value=toupper('a');

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' )

  printf("toupper('a')=%c\n",return_bit_value);

  return_bit_value=_toupper('z');   //相当于( (c)-'a'+'A' )

  printf("_toupper('z')=%c\n",return_bit_value);

}

//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

void Serial_Port_Initialization()

{ SCON  = 0x50;  //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI

                 //SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;

                 //REN=1,使能接收;

  TMOD |= 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00

                //GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电平,才

                //可以启动Timer;

                //M11:M10=10,选择方式2,8位自动重装载; 

  TH1   = 221;  //TH1:  reload value for 1200 baud @ 16MHz

  TR1   = 1;    //启动Timer1;

  TI    = 1;    //发送UART的第一个字节,为下次发送做准备;

}

void main(void)

{ Serial_Port_Initialization(); //初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

  for(;;)

     { test_isalpha();  //测试isalpha()函数;

   test_isalnum();    //测试isalnum()函数;

   test_iscntrl();     //测试iscntrl()函数;

   test_isdigit();     //测试isdigit()函数;

   test_isgraph();    //测试isgraph()函数;

   test_isprint();     //测试isprint()函数;

   test_ispunct();    //测试ispunct()函数;

   test_islower();    //测试islower()函数;

   test_isupper();   //测试isupper()函数;

   test_isspace();   //测试isspace()函数;

   test_isxdigit();   //测试isxdigit()函数;

   test_toint();     //测试toint()函数;

   test_tolower();   //测试tolower()函数;

   test_toupper();   //测试toupper()函数;

 }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Font Awesome 文件类型图标

Font Awesome 文件类型图标 Font Awesome 是一个广泛使用的图标库,它提供了大量的矢量图标,可以轻松地与各种网页和应用程序集成。这些图标涵盖了多种类别,包括文件类型图标。在本文中,我们将探讨 Font Awesome 提供的一些常见的文件类型图标,以及如何在项目中使用它们。…

探索LangChain-Chatchat 0.3:一体化Agent与强大RAG模型的全面入门指南

介绍 LangChain-Chatchat 支持RAG和Agent0.3版本跟大模型解耦,支持Xinference、Ollama、LocalAI、FastChat、One API,可以非常方便的切换各个模型,本文只是介绍XinferenceXorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 X…

数据结构速成--查找

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …

STM32CubeMx的学习记录系列(1) - 软件的下载与点灯

目录 因为最近要学STM32的嵌入式AI开发&#xff0c;但它于是基于STM32CubeMX开发的&#xff0c;就顺便把这个学了。 直接百度STM32CubeMX&#xff0c;到意法的官网去下载。下载过程就看这篇博客 https://blog.csdn.net/as480133937/article/details/98885316 点灯 选择芯片&…

内网渗透:内网基础信息收集

Windows&#xff1a; whoami:查看当前当前主机名和登录用户名 whoami /user : 打印当前主机名和输出SID ​ SID的最后一个数字&#xff1a; 1000&#xff1a;普通管理员 500&#xff1a;administrator 501&#xff1a;Guest 516&#xff1a;域控 544&#xff1a;域管理员 net…

002 SpringMVC入门项目搭建

文章目录 HelloController.javaspringmvc.xmlweb.xmlpom.xmlhello.jsp http://localhost:8080/showView http://localhost:8080/showData HelloController.java package com.springmvc.controller;import org.springframework.stereotype.Controller; import org.springframewo…

ArtTS语言基础类库内容的学习(2.10.1)

上篇回顾&#xff1a; ArkTS开发系列之Web组件的学习&#xff08;2.9&#xff09; 本篇内容&#xff1a;ArtTS语言基础类库-异步同步并发内容的学习(2.10.1&#xff09; 一、知识储备 1. 异常并发 Promise和Async/await提供异步并发能力&#xff0c;是标准的JS异步语法 Pr…

Scala的Actor模型:并发编程的革命性抽象 摘要

标题&#xff1a;Scala的Actor模型&#xff1a;并发编程的革命性抽象 摘要 Scala语言以其强大的函数式编程特性和并发模型而闻名。Actor模型作为Scala并发编程的核心&#xff0c;提供了一种高效、可靠的并行处理方式。本文将深入探讨Scala的Actor模型&#xff0c;包括其设计理…

亿发微商城:从社交流量到生意增量,拓客+变现双收益

亿发微商城提供私域经营必备的系统 、服务和技术支持等全套解决方案。省去开发成本&#xff0c;还原品牌调性&#xff0c;打通社交渠道&#xff0c;经营私域会员&#xff0c;带来传统电商和线下门店之外的生意增量。

揭秘Etched AI:三个哈佛辍学00后挑战英伟达,推出Transformer专用ASIC芯片sohu

人工智能领域最近掀起了一股新的热潮&#xff0c;三位哈佛辍学的00后本科生创建了Etched AI&#xff0c;并成功推出了一款超强AI芯片sohu&#xff0c;直指英伟达的AI芯片帝国。这款芯片被誉为比英伟达H100快20倍&#xff0c;吸引了众多科技界的关注。本文将深入探讨Etched AI及…

“实时数据大屏2k、4k、8k”这样做【高级前端必备技能之一】

&#x1f525;废话不多先上效果图 &#x1f525;划重点 新手程序员需要注意以下几点&#xff1a; 我们需要进行充分的技术调研&#xff0c;进行技术选型产品&#xff0c;UI&#xff0c;再三确认效果图是否确定&#xff0c;避免后续出现返工的情况 不能拿到效果图之后&#x…

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件&#xff08;文件大小分别为 1.7M&#xff0c;5.1M&#xff0c;3.4M&#xff0c;6.8M&#xff09; 1. 第一种情况&#xff0c;默认分片&#xff1a;不修改程序代码&#xff0c;直接使用 WordCount 源程序 2…

电脑提示vcomp140.dll丢失的几种有效的解决方法,轻松搞定dll问题

在电脑使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是找不到vcomp140.dll。那么&#xff0c;究竟什么是vcomp140.dll呢&#xff1f;为什么会出现找不到vcomp140.dll的情况呢&#xff1f;本文将从vcomp140.dll的定义、常见原因、对电脑的影响以及解…

如何理解CI/CD的概念及其在Java项目中的应用

CI/CD 是持续集成&#xff08;Continuous Integration&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment&#xff09;的缩写。它是一种现代软件开发实践&#xff0c;用于提高代码发布的频率和质量&#xff0c;确保软件系统的稳定性和一致性。通过自动化构…

19.《C语言》——【如何理解static和extern?】

&#x1f387;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

解锁iCloud的全能潜力:从新手到专家的终极指南!

在今天这个数字化日益发达的时代&#xff0c;云服务已经成为我们生活中不可或缺的一部分。苹果公司的iCloud服务&#xff0c;作为一个集成的云服务平台&#xff0c;为用户提供了数据存储、备份、同步等多样化的功能。通过本文&#xff0c;我们将深入探讨如何高效利用iCloud&…

[单机版架设]新天堂2-死亡骑士338|带AI机器人

前言 今天给大家带来一款单机游戏的架设&#xff1a;新天堂2-死亡骑士338单机服务端—带AI机器人 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 新天堂2 搭建教程 此游戏架设不需要虚拟机&#xf…

识图生成代码:通义千问vsGPt4o,有点小崩

今日对比一下通义千问和GPt4o&#xff0c;在通过识别图片然后去生成前端代码 在当今ai的时代&#xff0c;通过ai去生成页面的代码可以很大的提高我们的开发效率下面是我们要求的生成的图片截图&#xff0c;这是掘金的榜单 效果对比 首先我们使用通义千问&#xff0c;让他去帮我…

C++11中引入的auto关键字和范围for循环(range-based for loop)。

C11中引入的auto关键字和范围for循环&#xff08;range-based for loop&#xff09;是两项重要的新特性&#xff0c;它们旨在提高代码的可读性和简洁性&#xff0c;同时减少编写错误。 auto关键字 auto关键字在C11中被赋予了新的含义&#xff0c;用于自动类型推断。在C11之前…

Django 自定义过滤器

1&#xff0c;编写自定义过滤器并注册 创建目录 Test/app5/templatetags 分别创建文件 Test/app5/templatetags/__init__.py Test/app5/templatetags/myfilter.py 添加过滤器脚本 Test/app5/templatetags/myfilter.py from django import template register template.…