2023年3月

问题的引入

我们在vs2010等编辑器中,进行一个简单的加法计算器的编写。会发现一个现象,就是如果在form中编写的代码,是可以不用Button按钮的,可以做到边输入边求和。但是我们如果在Web页面里面的话,这样就做不到了,我们往往需要按一下回车才会执行,把鼠标移开才会执行(在textchange时间的属性AutoPostBack设置为true)。甚至在一些浏览器中压根打不开。我们必须在页面中添加一个button按钮才能做到求和的效果。

按button后的现象

我们会发现页面刷新了一下。这是因为将数据传回了服务器的结果(这个时候,我们可以在页面的右下角发现一个服务器的图标)。

之所以会这样,是因为浏览器只认识:HTML、CSS、JavaScript,它不认识C#代码,也就无法执行C#代码。

但是我们想要执行C#代码,这部分代码必须得传到服务器,然后在服务器上执行这段代码,执行完后,再传回给浏览器。

为什么微软不把C#做得使其再web、form中的功能一样呢

因为这样会浪费大量的带宽,我们还是拿边输入边求和的例子来讲。假设C#再web中也做到了边输入边求和,这样也就是说要做到不断地将数据从浏览器传到服务器,再从服务器传到浏览器,这样就需要很多的带宽。避免过多地和服务器之间进行交互。这也是为什么我们在C#在form中的功能比在web中强大了。

为什么需要服务器

因为在B/S里面,服务器的计算能力是大于浏览器的,这就使得我们大量的计算是需要服务器来进行的。

为什么大家都在刷网课的时候,速度会那么慢

1、网络带宽的原因

访问服务器网络带宽不够。

2、网络接收窗口的个数不够

服务器接受的能力受到限制。

这也是为什么阿里、腾讯的软件用着不卡的原因。

Turtle库

Turtle库是Turtle绘图体系的Python实现,它是Python语言的标准库之一。

Python计算生态=标准库+第三方库

标准库
:随解释器直接安装到操作系统中的功能模块。

第三方库
:需要经过安装才能使用的功能模块。

首先,我们来介绍一下
如何引用turtle库:

1.
方法一

import <库名>

<库名>.<函数名>(<函数参数>)

2.
方法二

from <库名> import <函数名>

from <库名> import *

<函数名>(<函数参数>)

注意,第一种方法不会出现函数重名的问题,第二种方法会出现

3.
方法三

import <库名> as <库别名>

<库别名>.<函数名>(<函数参数>)

介绍一下Turtle库的原理:就是我们假想在画布中有一只海龟,它在画布上跑来跑去,我们使用代码控制Turtle的运行,将它的轨迹显示出来。

Turtle的一个画布空间最小单位是像素。

turtle的空间坐标系

这里面的r默认圆心在海归左侧r距离的位置,左为正,右为负

RGB色彩模式

RGB是指红蓝绿三个通道的颜色组合(turtle.colormode(mode))

turtle的画笔控制函数

-turtle.penup()  抬起画笔

-turtle.pendown()  落下画笔

-turtle.pensize(width)  画笔宽度

-turtle.pencolor(color)  画笔颜色

画笔颜色的三种形式:

颜色字符串:turtle.pencolor("purple")

RGB的小数值:turtle.pencolor(1,1,1)

RGB的元组值:turtle.pencolor((1,1,1))

一、数据类型及操作

#
整数类型,和数学中整数的一样,可正可负

*十进制:210

*二进制:以0B或者0b开头:0b1010

*八进制:以0O或者0o开头:0o123

*十六进制:以0x或者0X开头:0x9a

-示例:pow(2,50)#计算2^50

#
浮点数类型,和数学中的实数一样

*浮点数的取值范围在-10^307-10^308之间

*浮点数存在不确定位数,这是因为电脑中数据存储数字是二进制,二进制表示小数可以无限接近,但是永远不会等于。

-示例:0.1+0.2==0.3 return false;round(0.1+0.2,1)==0.3 return true

-round()函数介绍,它在python里面起到四舍五入的效果,第一个参数是输入要计算的式子,第二个参数是把式子产生的得数进行几位小数的保留,例如上面案例中,0.1+0.2=0.3, 此时0.3是保留了1位小数。如果我们把第二个参数省略不写,那么会默认为四舍五入后为整数,也就是小数位个数为0。由于不确定尾数一般出现在10^-16处,所以采用round()函数很有用。

*使用字母e或者E作为幂的符号,以10为基数。

#
复数类型,和数学中的复数类型一样

*z=a+bj称为复数,其中,a是实部,b是虚部。

*获取复数的实部:z.real

*获取复数的虚部:z.imag

-示例:z=1.2+12j  z.real return 1.2  z.imag return 12.0

#
数值运算操作符

*x+y   加,x与y之和

*x-y    减,x与y之差

*x*y    乘,x与y之积

*x/y    除,x与y之商

*x//y   整数除

-案例:10//3   return 3

*+x     x本身

*-x      x的负值

*x%y       余数,模运算,

-案例:10%3   return 1

*x**y        幂运算x^y

*x**=3    与    x=x**3等价(下面类似)

* x*=y

* x-=y

* x*=y

* x/=y

* x//=y

* x%=y

* x**=y

#
类型之间可以进行混合运算,生成结果为“最宽”类型

整数->浮点数->复数

-案例:12+4.0=16.0

#
运算函数

-案例:a=divmod(10,3); a[0] return 3 a[1] return 1

二、字符串类型及操作

#
字符串类型的表示

*字符串由一对单引号或一堆双引号表示

-‘C’

*字符串是字符的有序序列,可以对其中的字符进行索引

-"A" 是字符串 "ABCDEFG"的第0个字符

*一对单引号或者双引号表示,仅表示单行字符串。

*由一对三单引号或三双引号表示,可以表示多行字符串(这是为了方便引号的表示)‘

*字符串的序号

*字符串的使用

索引:返回字符串中单个字符 <字符串>[M]

切片:返回字符串中一段字符字串 <字符串>[M:N](注意:它不包含索引为N的那一项)

-其中,<字符串>[M:N],M缺失表示从N至开头,N缺失表示从M至结尾

-<字符串>[M:N:K] 根据步长K对字符串切片:-案例:"ABCDEFG"[1:8:2]   return   “BDF”

转义字符:“\b” 回退   "\n" 换行   "\r" 回车  "这里有一个引号(\')"  return “这里有一个引号(')”

#
字符串操作符

#
字符串处理函数

#
字符串处理方法

#
字符串类型的格式化

三、time库的使用

#
时间获取

*time():获取计算机内部时间值,浮点数

-案例:time.time()

*ctime():获取当前时间并以易读的方式显示出来,返回字符串

-案例:time.ctime()

*gmtime():获取当前时间,表示为计算机可以处理的时间格式

-案例:time.gmtime()

#
时间格式化:将时间以合理的方式显示出来

*strftime(tpl,ts):tpl是格式化模板字符串,用来定义输出效果;ts是计算机内部时间类型变量

-案例:>>>t=time.gmtime()  >>>time.strftime("%Y-%m-%d %H:%M:%S",t)

*strptime(str,tpl)

str是字符串形式的时间值,tpl是格式化模板字符串,用来定义输入效果。

>>>timeStr='2018-01-26 12:55:20'

>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")

#
程序计时

*
产生时间
:sleep(s)

s拟休眠时间,单位是秒,可以是浮点数

>>>def wait():

time.sleep(3.3)

>>>wait() #程序等待3.3秒后再退出

*
测量时间
:perf_counter()

>>>start=time.perf_counter()

>>>end=time.perf_counter()

>>>end-start

#以上素材均来自嵩天先生的python语言程序设计课程

一、要求

我们在 C#中,有一个keypress事件,可以做到判断输入的字符是否是非法字符。代码如下:

public void txt_Str_KeyPress(object sender.KeyPressEventArgs e)

{

if(!char.IsDigit(e.KeyChar))

{

e.Handled=true;

}

}

这样我们就会发现输入为非整数时就压根不出现。或者,如果不知道IsDigit()这个方法,我们还是可以按照(e.KeyChar>='0' && e.KeyChar<='9'来判断的)。

但是,在Javascript里面,我们是否依然可以做到keyPress()下起到同样的作用呢?

二、解决

他们之间的执行次序为:onkeydown  onkeypress  onkeyup

ASP的全称为Active
Server
Pages(中文译名为活动服务器页面),是Microsoft公司推出的用于Web应用开发的一种编程技术。

ASP.NET是微软.NET Framework的一部分,是开发Web应用程序的全新编程模式,可使Web开发人员更快捷地开发Web应用程序。

如下图所示,ASP.NET页面通过ISAPI与IIS通信,有一个用作页面的缓存cache,以提高性能。

ASP.NET采用的强类型语言vb.net、C#等,采用完全面向对象方式编程,C#是由C和C++发展而来的面向对象和类型安全的编程语言。

传统的web生命周期和AJAX的生命周期的比较

这个是传统的web应用的生命周期示意图,从中我们可以看出它的生命周期是很短的.也就是说只要和服务器交互,那么它上面一个页面就消失了,它就会产生一个新的页面。

它的生命周期主要分为:请求响应阶段、页面构建阶段、事件处理阶段;

可以参照

https://www.cnblogs.com/kloseking/p/3163662.html

进行理解。

这个是AJAX的生命周期示意图。

图中可以看出,它的生命周期长很多,这样对于编程人员比较友好,但是对于用户来说,传统的web形式更为友好,因为不用下载,可以随时使用。