整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「Python从零到壹」 二.语法基础之条件语句、循

「Python从零到壹」 二.语法基础之条件语句、循环语句和函数

.条件语句

在讲诉条件语句之前,需要先补充语句块的知识。语句块并非一种语句,它是在条件为真时执行一次或执行多次的一组语句,在代码前放置空格缩进即可创建语句块。它类似于C、C++、Java等语言的大括号({ })来表示一个语句块的开始和结束。

在Python中使用冒号(:)来标识语句块的开始,块中每一条语句都有缩进并且缩进量相同,当回退到上一层缩进量时,就表示当前语句块已经结束。 下面开始详细讲解条件语句。

1.单分支

单分支语法如下:

if <condition>:
	<statement>
	<statement>


< condition > 是条件表达式,基本格式为< expr >< relop >< expr >;< statement >是语句主体。判断条件如果为真(True)就执行语句,如果为假(False)就跳过语句,执行下一条语句。条件判断通常有布尔表达式(True、False)、关系表达式(>、<、>=、<=、==、!=)和逻辑运算表达式(and、or、not,其优先级从高到低是not、and、or)等。

注意:在Python2.x版本中,条件表达式是不强制要求用括号括起来的,但条件表达式后面一定要添加英文冒号字符。

a=10
if a==10:
    print('变量a等于10')
    print(a)


输出结果如下:

2.二分支

二分支语法如下:

if <condition>:
	<statement>
	<statement>
else:
	<statement>
	<statement>


执行过程如下图所示:

如果条件语句< condition >为真,if后面的语句就被执行,如果为假,则执行else下面的语句块。条件语句的格式为:< expr >< relop >< expr >,其中< expr >为表达式、为关系操作符。例如:a >=10、b !=5等。

a=10
if a >=5:
    print('变量a大于等于5')
    print(a)
else:
    print('变量a小于5')
    print(a)


输出结果如下,由于变量a为10,大于5执行if中的语句。

3.多分支

if多分支由if-elif-else组成,其中elif相当于else if,同时它可以使用多个if的嵌套。具体语法如下所示:

if <condition1>:
	<case1 statements>
elif<condition2>:
	<case2 statements>
elif<condition3>:
	<case3 statements>
...
else:
	<default statements>


该语句是顺序评估每个条件,如果当前条件分支为True,则执行对应分支下的语句块,如果没有任何条件成立,则执行else中的语句块,其中else是可以省略的。代码如下:

num=input("please input:")
num=int(num)
print(num)
if num >=90:
    print('A Class')
elif num >=80:
    print('B Class')
elif num >=70:
    print('C Class')
elif num >=60:
    print('D Class')
else:
    print('No Pass')


输出值为76,则在80到70之间,成绩为C等级,输出结果如下图所示。

注意:由于Python不支持switch语句,所以多个条件判断,只能用elif来实现,如果判断需要多个条件需同时判断时,可以:

  • 使用or (或),表示两个条件有一个成立时判断条件成功
  • 使用and (与),表示只有两个条件同时成立的情况下,判断条件才成功
# 判断值是否在小于0或大于10
num=10
if num < 0 or num > 10:    
    print('hello')
else:
    print('undefine')
# 输出结果: undefine
# 判断值是否在0~5或者10~15之间
num=8
if (num >=0 and num <=5) or (num >=10 and num <=15):    
    print('hello')
else:
    print('undefine')


输出结果如下图所示:

当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外and和or的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

同时,你也可以在同一行的位置上使用if条件判断语句,如下实例。但不见大家使用类似的语法,在我们编写项目或实战中,很可能你的代码会供别人学习,有时你只负责其中一部分,良好的代码格式及注释是非常必要的。

var=520
if (var==520): print("感谢您关注娜璋AI安全之家")


二.循环语句

Python循环语句主要分为while循环和for循环,它允许我们执行一个语句或语句组多次。

1.while循环

while循环语句的基本格式如下:

while <condition>:
	<statement>
else:
	<statement>


执行流程如下图所示:

条件表达式< condition >如果为真时,则循环体重复执行,直到条件判断为假,循环体终止,如果第一次判断条件就为假,则直接跳出循环执行else语句,注意else语句可以省略,同时冒号(:)开始进入循环体,缩进区分语句块。条件语句condition包括布尔表达式(True、False)、关系表达式(>、<、>=、<=、==、!=)和逻辑运算表达式(and、or、not)等。

案例1:1+2+…+100

i=1  
s=0  
while i <=100:  
    s=s+i  
    i=i+1  
else:  
    print('over')
print('sum=', s)


这段代码是作者写博客或授课时,讲述循环语句最常用的例子,求1+2+3+…+100的结果,答案是5050。该段代码反复执行“i<=100”判断,当i加到101时,判断i>100为假则结束循环执行else语句。

案例2:循环打开网站

再举一个实例,通过定义一个while循环,调用webbrowser库的open_new_tab()函数循环打开百度首页网址,下面代码反复打开了百度首页5次。完整代码如下:

import webbrowser as web  
import time  
import os
i=0  
while i<5:  
    web.open_new_tab('http://www.baidu.com')  
    i=i+1  
    time.sleep(0.8)  
else:  
    os.system('taskkill /F /IM iexplore.exe')  
print('close IE')


代码是调用webbrowser库中open_new_tab()函数打开窗口(百度链接)5次。

最后循环结束执行os.system()操作系统函数,调用taskkill命令结束IE浏览器进程(Iexplore.exe),其他浏览器程序修改为chrome.exe、qq.exe或firefox.exe即可。其中参数“/F”表示强行终止程序,“/IM”表示图像,如下图所示。

注意:上述代码实现了循环打开某个网站,可以应用于刷取网页浏览量或Web开发测试等功能。比如新浪博客等部分网页打开一次浏览器会计算一次浏览次数,通过上面这段代码可以循环增加阅读量,部分网站又是通过浏览量进行排序的,不妨试试看。作者引入该代码仅为读者了解循环,也为后面的爬虫知识埋下伏笔。

案例3:奇数和偶数计算

最后补充一个奇数和偶数计算的案例,其基本流程如下图所示:

代码如下:

numbers=[12, 37, 5, 42, 8, 3]
even=[]
odd=[]
while len(numbers) > 0:
    number=numbers.pop()
    if(number % 2==0):      #偶数判断
        even.append(number)
    else:
        odd.append(number)
#输出结果
print(even)
print(odd)


输出结果如下:

[8, 42, 12]
[3, 5, 37]


2.for循环

for循环语句的基本格式如下:

for <var> in <sequence>:
	<statement>
	<statement>


流程图如下:

自定义循环变量var遍历sequence序列中的每一个值,每个值执行一次循环的语句块。sequences表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)和files(文件)。下面的代码是计算1到100的求和,输出三角形星号的示例。

#元组循环
tup=(1,2,3,4,5)  
for n in tup:  
    print(n)  
else:  
    print('End for\n')
    
#计算1+2+...+100
s=0
for i in range(101):
    s=s + i
print('sum=', s)
#输出三角形星号
for i in range(10):
    print("*"*i)


输出结果如下图所示,循环遍历元组tup变量中的值,依次获取并输出;然后计算1累加到100,range(101)表示依次获取101范围内的100个数字,其累加结果为5050;最后输出星号三角形,print “ * ” * i 代码中,第一个星号表示输出星号字符串,第二个星号是乘法,表示输出5个星号,终输出三角形。打印图形是编程基础,使用Python实现要比C语言容易很多,但原理逻辑是一样的。

3.Break、Continue和Pass语句

Break和Continue是两个常用的跳出循环语句。

  • Break语句

跳出最内层while、for循环,在语句块执行过程中终止循环,并且跳出整个循环。

s=0
num=0
while num<20:
    num +=1
    s +=num
    if s > 100:
        break
print("The sum is", s)
# The sum is 105


当求和变量s大于100的时候,进入if判断,执行break跳出循环,最后输出105。

  • Continue语句

在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。

for num in range(10):
    if num % 2==0:
        print("even number:", num)
        continue
    print("number:",num)


输出结果如下,当为偶数的时候continue跳出当前循环,for循环中只输出偶数。

>>> 
even number: 0
number: 1
even number: 2
number: 3
even number: 4
number: 5
even number: 6
number: 7
even number: 8
number: 9
>>> 


  • pass语句

pass语句是空语句,为了保持程序结构的完整性所使用的。

# 输出 Python 的每个字母
for letter in 'Python':
   if letter=='h':
      pass
      print('这是 pass 块')
   print('当前字母 :', letter)
print("Good bye!")


输出结果如下图所示:

4.嵌套循环

while基本语法如下:

while expression:
   while expression:
      statement(s)
   statement(s)


for基本语法如下:

for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)


下面以最简单的冒泡排序算法来补充循环嵌套知识。冒泡排序是最常见到的排序算法,也是很基础的一种排序算法。它的实现思想是:

相邻的两个元素进行比较,然后把较大的元素放到后面(正向排序),在一轮比较完后最大的元素就放在了最后一个位置,像鱼儿在水中吐的气泡在上升的过程中不断变大。

def bubble_sort(list):
    count=len(list)
    for i in range(count):
        for j in range(i + 1, count):
            if list[i] > list[j]:
                list[i], list[j]=list[j], list[i]
    return list
#排序算法
list=[3, 91, 23, 14, 56, 9]
print("排序前:", list)
res=bubble_sort(list)
print("排序后:", res)


输出结果如下:

你可能会疑惑bubble_sort()是什么?其实它是一个自定义函数,下面我们马上讲解。

三.函数

当读者需要完成特定功能的语句块时,需要通过调用函数来完成对应的功能。函数分为无参数函数和有参数函数,当函数提供不同的参数时,可以实现对不同数据的处理。下面从自定义函数、系统自带函数、第三方库函数三个方面进行讲解。

1.自定义函数

(1) 定义方法

为了简化编程,提高代码的复用性,可以自定义函数,函数定义如下:

def funtion_name([para1,para2...paraN]):
	statement1
    statement2
      ....
    [return value1,value2...valueN]


其中:

  • 定义函数需要使用def关键词
  • function_name表示函数名,后面的冒号(:)不要忘记,并且缩进
  • [para1,para2…paraN]表示参数,可以省略,也可以多个参数
  • [return value1,value2…valueN]表示返回值,可以无返回值,也可以多个返回值
  • 需要注意的是自定义函数有返回值,主调函数就需要接受返回的结果

函数调用时,形参被赋予真实的参数,然后执行函数体,并在函数结束调用时返回结果。Return语句表示退出函数并返回到函数被调用的地方,返回值传递给调用程序。

首先来看一个无返回值的求和函数fun1(),代码如下:

#函数定义
def fun1(a,b):
    print(a,b)
    c=a + b
    print('sum=',c)
#函数调用
fun1(3,4)
# 3 4
# sum=7


再来看一个包含多个参数返回的计算器函数fun2(),代码如下,return返回五个结果。

#函数定义
def fun2(a,b):  
    print(a,b)
    X=a + b  
    Y=a - b  
    Z=a * b  
    M=a / b  
    N=a ** b  
    return X,Y,Z,M,N
#函数调用
a,b,c,d,e=fun2(4,3)  
print('the result are ',a,b,c,d,e)
re=fun2(2,10)  
print(re)


输出结果如下,依次返回加法、减法、乘法、除法、幂运算结果。

>>> 
4 3
the result are  7 1 12 1.3333333333333333 64
2 10
(12, -8, 20, 0.2, 1024)
>>> 


(2) 自定义函数参数含预定义

预设值是在自定义函数基础上,对某些参数赋予预定义值。例如:

def fun3(a,b,c=10):
    print(a,b,c)
    n=a + b + c
    return n
  
print('result1=',fun3(2,3))
print('result2=',fun3(2,3,5))


第一次调用a为2,b为3,c为预定义值10,求和输出15;第二次调用修改了预定义值c,赋值为5,求和即为2+3+5=10。

注意:预定义值得参数不能先于无预定义值参数;同时,函数调用时,建议采用一对一赋值,也可以在函数调用中给出具体形参进行赋值,但需要注意的是在函数调用过程中(使用函数时),有预定义值的参数不能先于无预定义值参数被赋值。

2.常见内部库函数

Python系统内部提供了一些库函数供大家使用,这里主要介绍最常见的四个库函数,即str字符串库函数、math数据库函数、os操作系统库函数、socket网络套接字库函数。Python常见内部库函数如下:

下面代码是这四个常见内部库函数的具体用法,代码如下:

# -*- coding:utf-8 -*-
#字符串库函数
str1="hello world"
print('计算字符串长度:', len(str1))
str2=str1.title()
print('首字母大写标题转换:', str2)
str3='12ab34ab56ab78ab'
print('字符串替换:', str3.replace('ab',' '))
#数学库函数
import math
print(math.pi)
num1=math.cos(math.pi/3)
print('余弦定律:', num1)
num2=pow(2,10)
print('幂次运算:', num2)
num3=math.log10(1000)
print('求以10为底的对数:', num3)
#操作系统库函数
import os
print('输出当前使用平台:', os.name)
path=os.getcwd()
print('获取当前工作目录', path)
os.system('taskkill /F /IM iexplore.exe') #关闭浏览器进程
#网络套接字库函数
import socket
ip=socket.gethostbyname('www.baidu.com')
print('获取百度ip地址', ip)


输出结果如下图所示。

3.第三方库函数

Python作为一门开源语言,它支持各种第三方提供的开源库供我们使用。其使用第三方函数库时的具体格式为:

  • module_name.method(parametes)

表示“第三方函数名.方法(参数)”。例如httplib\httplib2库是针对HTTP和HTTPS的客户端协议,使用httplib2库函数之前,如果没有安装httplib2库会报错“ImportError: No module named httplib2”,如图2.18所示。

在Linux环境中,输入命令“easy_install httplib2”可以实现自动安装扩展包,Windows环境下需要安装pip或easy_install工具,再调用命令执行安装。在后续文章会讲解pip安装工具及用法,后面章节也会介绍各种第三方库函数实现数据爬取和分析操作。

四.总结

无论如何,作者都希望这篇文章能给您普及一些Python知识,更希望您能跟着我一起写代码,一起进步。如果文章能给您的研究或项目提供一些微不足道的思路和帮助,就更欣慰了。作者最大的期望就是文章中的一些故事、话语、代码或案例对您有所帮助,致那些努力奋斗的人。

遗憾,让我们懂得完美。

逝去,让我们不断前行。

她夜色中的身姿是那么的美。

————————————————

版权声明:本文为CSDN博主「Eastmount」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Eastmount/article/details/108479670

习目标

将指定的纯文本文档转换为HTML文件。

实现目标

在浏览器中打开最终生成的HMTL文件,呈现下图的样式。

关键内容

python数据挖掘,python爬虫

练习这个项目,最好具备一些HTML基础。

如果没有接触过,这里我做一下简单的介绍。

HTML文件是我们常见的网页文件,其中包含HTML源代码。

HTML源代码由HTML标签组成,这些标签往往是成对出现(个别除外)。

一个简单的HTML示例代码:

<html>

<head>

<meta charset="gbk">

<title>...</title>

</head>

<body>

<h1>一级标题</h1>

<p>我是段落内容。</p>

</body>

</html>

上方的代码复制到一个文本文档中,并将文件后缀改为“.html”,在浏览器中打开即可看到效果。

这里我们看到了一些标签:

  • <html> 和</html> 之间是描述网页的内容<head>和</head>之间是描述页面头部内容<meta>包含有关页面的元信息<title>和</title>之间是显示在浏览器标签上的页面标题<body> 和</body> 之间是描述可见的页面主体内容<h1> 和</h1> 之间的文本内容被显示为一级标题<p> 和</p> 之间的文本内容被显示为文本段落

另外,在这个案例中我们还会用到一些标签。

  • <a>和</a>可以为标签之间的文本添加链接<ul>和</ul>之间是内容列表<li>和</li>之间是列表项<strong>和</strong>之间是加重的文本内容</br>是可以对内容进行换行的换行标签

案例分析

当我们了解了HTML的结构和各种标签的作用,接下来,我们分析一下,如何进行文档与HTML的转换。

1、原始文档中的标题都是大写英文字母开头和英文字母结尾。

2、文档中除了标题,就是段落和列表,段落和列表的区别是:列表中包含列表项。

3、段落中存在换行。

4、列表项(以“●”开头)需要放置于列表中。

3、文档中“*”之间的内容需要加重显示。

实现过程

一、定义处理原始文档内容的模块(util.py)

1、定义一个生成器“lines”,能够为原始文档结尾添加空行。

def lines(file):

for line in file:

yield line # 生成文件的每一行内容

yield '\n' # 为文件末尾添加空行,保证最后添加到block的行能够被生成。

为什么需要在文档末尾添加空行,可以看下方生成器“blocks”代码中的注释进行理解。

2、定义一个生成器“blocks”,对原始文档内容进行读取,当读取到空行,将已读取的内容连接为内容块并生成。

def blocks(file):

block=[]

for line in lines(file):

if line.strip(): # 如果读取的行不是空行

block.append(line) # 添加行内容到列表

elif block: # 如果读取空行(如果文件末尾不是空行,则不会执行下方语句块,导致上方语句块最后一次添加的内容无法生成。)

yield ''.join(block).strip() # 连接列表中所有的行内容

block=[]

二、定义处理文档的主程序模块(main01.py)

在这个模块中,我们需要导入一些需要使用的内置模块。

  • sys:用于获取命令行终端的输入re:通过正则表达式模块对原始文档内容进行替换。

以下是主程序的具体代码,大家可以通过注释理解整个处理过程。

import sys, re

from util import *

print('<html><head><meta charset="gbk"><title>doc.txt</title></head><body>') # 添加HTML基本标签

blocks=blocks(sys.stdin) # 获取系统标准输入

for block in blocks: # 遍历文件内容

block=re.sub('\*(.+)\*', '<strong>\1</strong>', block) # 替换内容块中两个星号间的内容为加重样式

block=re.sub(r'\n *- *(.+)', '\n<li>\1</li>', block) # 替换内容块中以“-”开头的内容为列表项

block=re.sub(r'([^:>])\n', '\1<br/>\n', block) # 替换内容块中换行符“\n”为换行标签

if re.match(r'(^[A-Z][\w ]+[A-Za-z]$)', block): # 匹配大写字母开头和以字母结尾的内容

print('<h1>' + block + '</h1>') # 添加一级标题标签

elif '<li>' in block: # 如果内容块包含列表项

print('<ul>' + block + '</ul>') # 添加项目列表标签

else:

print('<p>' + block + '</p>') # 添加段落标签

print('</body></html>') # 添加HTML结束标签

当我们完成以上代码的编写,就可以通过命令行终端执行代码。

python main01.py <doc.txt> doc.html

通过以上命令就能够让主程序读取项目文件夹下的“doc.txt”,并且经过处理后输出文件“doc.html”。

这个文件会自动出现在PyCharm左侧文件列表中,在文件名称上点击鼠标右键,选择浏览器中打开(Open in Browser),就能够使用指定的浏览器进行浏览了。

在下一篇练习项目的教程中,我们将通过另外一种复杂的,但是具有很好扩展性的方式重新实现这个项目。

TML是一种用来描述网页的标记性语言。学习HTML可能并不难,主要是要记一些HTML标签和标签代表的含义。下面PHP程序员雷雪松根据使用的情况,整理出平时常用的HTML标签。

HTML基础之HTML常用标签-PHP程序员雷雪松的博客

1、最基本的HTML结构

<!--<!DOCTYPE> 是HTML5声明,<!DOCTYPE> 必须是 HTML 文档的第一行,位于 <html> 标签之前。<!DOCTYPE>是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。-->

<!DOCTYPE html>

<html>

<!-- head标签是所有头部元素的容器。head标签内的元素可包含脚本、样式表和提供页面的元信息等等。以下标签都可以添加到 head 部分:title、base、link、meta、script 以及style。头部的内容不会显示在浏览器的。 -->

<head>

<!-- 设置字符集,如果字符集不对,可能导致乱码。一般建议utf-8国际编码 -->

<meta http-equiv="Content-Type" content="text/html; charset=gb2312或utf-8或gbk" />

<!-- SEO相关标签,title定义文档的标题,百度建议一般不要超过32位,meta定义页面关键词和页面的描述-->

<title>网页标题</title>

<meta name="keywords" content="PHP程序员,技术博客,个人博客,雷雪松" />

<meta name="description" content="PHP程序员,雷雪松(Raykaeso)的博客是一个优秀的个人技术博客。PHP程序员雷雪松的博客记录了Linux学习,PHP开发与编程,Web前端开发,MySQL学习和教程,NoSQL数据库教程以及个人的人生经历和观点。" />

<link rel="stylesheet" type="text/css" href="main.css" />

<script type="text/javascript" src="main.js"></script>

</head>

<!-- 正文部分,所有在浏览器上可见的内容必须写在body标签内部 -->

<body>

</body>

</html>

2、最常用的HTML标签

a、布局标签

div标签定义文档中的分区或节(division/section),可以把文档分割为独立的、不同的部分,主要用于布局。

aside标签的内容可用作文章的侧栏,<span style="color: #ff0000;">html5新增标签</span>。

header标签定义页面的头部(介绍信息),<span style="color: #ff0000;">html5新增标签</span>。

section标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分,<span style="color: #ff0000;">html5新增标签</span>。

footer 标签定义文档或节的页脚,通常包含文档的作者、版权信息、使用条款链接、联系信息等等,<span style="color: #ff0000;">html5新增标签</span>。

article标签规定文章独立的其他内容,比如:标题、内容、评论,<span style="color: #ff0000;">html5新增标签</span>。

b、文本标签

h1-h6标签可定义标题

p标签定义段落

b/strong标签加粗

em标签来表示强调的文本,斜体

strong标签表示重要文本

u标签下划线

s标签删除线

br标签表示回车换行

hr标签表示水平线

span标签被用来组合文档中的行内元素。

blockquote标签表示块引用

pre标签可定义预格式化的文本,保持原有格式的一种标签。

sub标签下标,

sup>标签上标

&nbsp;表示一个空格

&copy;表示版权符

&lt;表示<

&gt;表示>

c、a标签定义超链接,指定页面间的跳转。链接可以指向外部链接或者页面内部id锚点,可以在当前页面打开,新开窗口。

<a href="指向的链接地址或者网址#ID名" target="_blank|_self|_top|_parent">百度</a>

d、多媒体标签

img标签主要在网页中插入图像,可以定义图片替换文本、显示宽度和高度、是否带边框,建议等比例设置,否则图像会变形。

<img src="图片地址" alt="替换文本,图片打不开的时候显示" width="图片宽度" height="高度" border="0" />

audio标签定义声音,比如音乐或其他音频流。<span style="color: #ff0000;">html5新增标签</span>。

<audio src="someaudio.wav">您的浏览器不支持 audio 标签。</audio>

video标签定义视频,比如电影片段或其他视频流。<span style="color: #ff0000;">html5新增标签</span>。

<video src="movie.ogg" controls="controls">您的浏览器不支持 video 标签。</video>

e、序列化标签

ul和li无序列表标签

<ul>

<li>HTML</li>

<li>JS</li>

<li>PHP</li>

</ul>

ol和li有序列表标签,可以使用type属性规定有序列表符号的类型。1 按数字有序排列,为默认值,(1、2、3、4);a 按小写字母有序排列,(a、b、c、d);A 按字母大写有序排列,(A、B、C、D)。i 按小写罗马字母有序,(i, ii, iii, iv);I 按小写罗马字母有序,(I, II, III, IV)。

<ol>

<li>HTML</li>

<li>JS</li>

<li>PHP</li>

</ol>

dl标签定义了定义列表(definition list),dl标签用于结合 dt(定义列表中的项目)和 dd(描述列表中的项目)。

<dl>

<dt>计算机</dt>

<dd>用来计算的仪器 ... ...</dd>

</dl>

f、表格标签

table标签和tr标签,th标签和td标签,合并单元格。

<table width="100%" height="193" border="1" cellpadding="0" cellspacing="0" bordercolor="#FF0000" bgcolor="#000000" background="">

<tr>

<th>标题</th>

<th>标题</th>

</tr>

<tr>

<!-- 合并横向单元格 -->

<td colspan="2" nowrap="nowrap">&amp;nbsp;</td>

</tr>

<tr>

<td></td>

<!-- 合并纵向单元格 -->

<td rowspan="2"> </td>

</tr>

<tr>

<td height="16"> </td>

</tr>

</table>

g、表单标签

form标签定义提交方式、提交地址、表单字符集以及如何对其进行编码,需要提交的表单一定要放在form标签内。

<form id="form1" name="form1" method="post|get" enctype="multipart/form-data" action="提交到的地址"></form>

input标签用于搜集用户信息

<input name="userName" type="text" maxlength="5" size="100" value="asdfasdfasfd" />

密码,输入的字符会被掩码(显示为星号或原点)

<input name="pwd" type="password" maxlength="5" size="100" value="" />

文件类型的表单,上传文件时,form表单一定要设置为enctype="multipart/form-data"

<input type="file" name="file" />

隐藏表单

<input type="hidden" name="country" value="China" />

提交

<input type="submit" name="Submit" value="提交" disabled="disabled" />

重置

<input type="reset" name="Submit2" value="重置" />

radio单选

<input name="sex" type="radio" value="1" />男

<input name="sex" type="radio" value="2" checked="checked" />女

checkbox多选

<input name="skill" type="checkbox" value="1" checked="checked" />PHP

<input name="skill" type="checkbox" value="2" />前端

<input name="skill" type="checkbox" value="2" />数据库

<span style="color: #ff0000;">注:checked="checked"可以简写成checked</span>

label标签为input元素定义标注,如果您点击label元素文本,就会触发此input控件。

textarea标签,设置文本区内的可见行数和宽度

<textarea name="content" cols="30" rows="10">大段文本输入框</textarea>

button标签定义一个按钮

提交按钮

<button type="submit" value="提交">提交</button>

重置按钮

<button type="reset" value="重置">重置</button>

select标签和option标签下拉列表

单选菜单列表框

<select name="user">

<option value="1">ray</option>

<option value="2" selected="selected">raykaeso</option>

</select>

多选列表下拉框,shift加鼠标单击,可以连续选择多个选择,CTRL+鼠标点击,可以点击多个。

<select name="user" size="10" multiple="multiple">

<option value="1">雷雪松</option>

<option value="2" selected="selected">ray</option>

<option value="3">raykaeso</option>

</select>

注:selected="selected"可简写成selected,表示选中

3、其他HTML事项

a、HTML标签和属性是不区分大小写的,建议HTML标签和属性都小写,属性值必须用双引号包围。

b、HTML标签都是以开始标签起始,以结束标签终止。大部分HTML标签都是成对出现的,称为双标签,比如:p标签、div标签,也有的HTML标签在开始标签中结束的标签,称为单标签,比如:hr标签、br标签。大多数 HTML 元素可拥有属性,文本内容都是写在开始标签与结束标签之间。

c、HTML标签之间尽量缩进与换行,每行代码不要过长,方便阅读和维护。

d、HTML标签使用必须符合标签嵌套规则。禁止a标签嵌套a标签,p标签嵌套div标签。

e、建议不使用HTML已经废弃的或者不赞成使用的标签,少使用table布局、iframe框架嵌套以及flash播放器。

来源:PHP程序员雷雪松的博客 -HTML基础之HTML常用标签(http://www.leixuesong.cn/2045)