小朋友学Python
Posted Alan_Fire
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小朋友学Python相关的知识,希望对你有一定的参考价值。
本节学习python的第一个程序:输出“Hello World!”。咱们用两种方法实现
方法(一)
进入python环境,直接使用print方法
方法(二)
先编程hello.py文件,再用python hello.py命令执行
注意,这种方法才是写python程序的常用方法。
1 在E盘下,新建一个PythonProjects目录,用以存放所有的python程序
2 在E:\\PythonProjects中创建hello.py文件,内容为
print("Hello World!")
3 在cmd命令行窗口中,先切换路径到E:\\PythonProjects目录下,再执行python hello.py命令
(注意,这里使用了命令pushd。win系统不同的磁盘之间,比如C盘和D盘之间,切换路径使用pushd命令;在相同的碰盘中切换路径,使用cd命令。
而mac/unix/linux由于只有一个盘,都是用cd来切换路径)
布尔类型
一、C语言
C语言中没有布尔类型,判断时 ,0为假,非0为真。
二、C++
C++的bool是布尔类型,取值为true或false
程序:
#include <iostream>
using namespace std;
int main()
{
bool a = true;
bool b = false;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "Size of bool is " << sizeof(bool) << " Byte" << endl;
return 0;
}
运行结果:
a = 1
b = 0
Size of bool is 1 Byte
三、Java
Java中的bool是布尔类型,取值为true或false
程序:
class BooleanTest {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("2 > 1 is " + (2 > 1));
}
}
运行结果:
a = true
b = false
2 > 1 is true
说明:
Java中的布尔数据类型只有两个可能的值:true和false。但是它的“大小”并不是精确定义的,1个字节、4个字节都是有可能的。
理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。
虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。大多数人都会很自然的这样去想,我同样也有这个疑问,经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位,具有高效存取的特点。所以这其实是运算效率和存储空间之间的博弈,两者都非常的重要。
四、Python
程序:
a = True
print(a)
b = False
print(b)
print(1 > 2)
运行结果:
注意:
python中不能显示写出数据类型,否则会报错。
比如在C/C++/Java中,你可以写int a = 10;
但是在Python中,写int a = 10会导致编译错误,只能写成a = 10
缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行
例1
if True:
print "True"
else:
print "False"
运行结果:
这里编译器给出的提示是,期待缩进的代码块。
例2
在两行print之前分别添加四个空格键
if True:
print "True"
else:
print "False"
运行结果
True
例3
在if前加一个空格,看看运行结果如何。
if True:
print "True"
else:
print "False"
运行结果
这里编译器给出的提示是不被期待的缩进。
说明:python对缩进要求还是很严格的。
有时候,你觉得两行代码的缩进是一样的,但编译器仍然报错。这可能是因为一个地方使用空格来缩进,而另一个地方使用了tab键来缩进。碰到这种情况要统一缩进风格。
引号、多行语句、注释
一、引号
Python 可以使用引号( \' )、双引号( " )、三引号( \'\'\' 或 """ ) 来表示字符串。其中三引号可以由多行组成。
例1
str1 = \'Hello\'
str2 = "Hello World!"
str3 = """Hello C++!
Hello Java!
Hello Python!"""
print(str1)
print(str2)
print(str3)
运行结果
二、多行语句
Python可以使用斜杠( \\)将一行的语句分为多行显示
例2
a = 1
b = 2
c = 3
total = a + \\
b + \\
c
print(total)
运行结果
6
若语句中包含 [], {} 或 () 括号就不需要使用多行连接符。
例3
days = [\'Monday\', \'Tuesday\', \'Wednesday\',
\'Thursday\', \'Friday\', \'Saturday\', \'Sunday\']
print(days)
运行结果
[\'Monday\', \'Tuesday\', \'Wednesday\', \'Thursday\', \'Friday\', \'Saturday\', \'Sunday\']
三、注释
C, C++, Java中,单行注释采用//,多行注释采用/* */
Python中,单行注释采用#,多行注释使用三个单引号(\'\'\')或三个双引号(""")
例4
# 这是单行注释
例5
\'\'\'
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
\'\'\'
例6
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
中文编码
编码一直是让新手头疼的问题,特别是 GBK、GB2312、UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向。但是编码又是那么重要,特别在网页这一块。如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了。
(一)ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他们把这称为”字节”。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去,他们就把这机器称为”计算机”。
开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上 00×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。
他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字 了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
后来计算机发展越来越广泛,世界各国为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了 最后一个状态255。从128到255这一页的字符集被称”扩展字符集”。但是原有的编号方法,已经再也放不下更多的编码。
等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。于是国人就自主研发,把那些127号之后的奇异符号们直接取消掉。规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在127号以下的那些就叫”半角”字符了。
中国人民看到这样很不错,于是就把这种汉字方案叫做 “GB2312″。GB2312 是对 ASCII 的中文扩展。
但是中国的汉字太多了,后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是 扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。
因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码。当时的中国人想让电脑显示汉字,就必须装上一个”汉字系统”,专门用来处理汉字的显示、输入的问题,装错了字符系统,显示就会乱了套。这怎么办?就在这时,一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。
UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于 ascii 里的那些”半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于”半角”英文符号只需要用到低8位,所以其高 8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。
但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。UNICODE 是用两个字节来表示为一个字符,它总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。
UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8 就是每次8个位传输数据,而 UTF16 就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。
看完这些,相信你对于这几个编码关系等,了解的比较清楚了吧。我再来简单的总结一下:
● 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。
● 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。
● 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。
● 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。
● 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。
● UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。
于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,电脑性能也已经足够无视这点性能的消耗了。所以推荐所有的网页使用统一编码:UTF-8。
(二)关于记事本无法单独保存“联通”的问题
当你新建一个 文本文档 之后,在里面输入 “联通” 两个字,然后保存。当你再次打开的时候,原来输入的 “联通” 会变成两个乱码。
这个问题就是因为 GB2312 编码与 UTF8 编码产生了编码冲撞造成的。从网上引来一段从UNICODE到UTF8的转换规则:
UTF-8编码 | Unicode编码 |
---|---|
0000 – 007F | 0xxxxxxx |
0080 – 07FF | 110xxxxx 10xxxxxx |
0800 – FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
例如”汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。
而当你新建一个文本文件时,记事本的编码默认是ANSI, 如果你在ANSI的编码输入汉字,那么他实际就是GB系列的编码方式,在这种编码下,”联通”的内码是:
十六进制表示 | 二进制表示 |
---|---|
c1 | 1100 0001 |
aa | 1010 1010 |
cd | 1100 1101 |
a8 | 1010 1000 |
注意到了吗?第一二个字节、第三四个字节的起始部分的都是”110″和”10″,正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本 时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了”00001 101010″,再把各位对齐,补上前导的0,就得到了”0000 0000 0110 1010″,不好意思,这是UNICODE的006A,也就是小写的字母”j”,而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就 是只有”联通”两个字的文件没有办法在记事本里正常显示的原因。
由这个问题,可以发散出很多问题。比较常见的一个问题就是:我已经把文件保存成了 XX 编码,为什么每次打开,还是原来的 YY 编码?!原因就在于此,你虽然保存成了 XX 编码,但是系统识别的时候,却误识别为了 YY 编码,所以还是显示为 YY 编码。
(三)Python 2.x中的编码问题
编写代码:
print “你好,世界”
运行结果:
原因:Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法:
(1)Mac/Linux/Unix系统
在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8
#coding=utf-8
print "你好,世界"
(2)Windows系统
将代码改为
#coding=utf-8
content = "你好,世界"
content_unicode = content.decode("utf-8")
content_gbk = content_unicode.encode("gbk")
print content_gbk
运行结果:
输入与输出
一、print与input
print "a =",
a = input()
print "b ="
b = input()
print "c =",
c = a + b
print c
运行结果:
说明:print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号
二、raw_input
print "a =",
a = raw_input()
print "b ="
b = raw_input()
print "c =",
c = a + b
print c
运行结果:
说明:
raw_input()是把输入的数据,全当成字符串处理了。
对于字符串而言,“+”代表连接。所以“1”+ “2”=“12”
条件语句
代码
a = -1
if a > 0 :
print "a is greater than 0"
elif 0 == a :
print "a equals 0"
else :
print "a is less than 0"
运行结果
a is less than 0
获取命令行参数
Python同样可以获取命令行参数
代码:
import sys
print sys.argv
运行结果:
C/C++/Java/Python的关键字
一、C语言关键字
C语言关键字有32个
auto | break | case | char | const | continue | default | do |
---|---|---|---|---|---|---|---|
double | else | enum | extern | float | for | goto | if |
int | long | register | return | short | signed | sizeof | static |
struct | switch | typedef | union | unsigned | void | volatile | while |
auto:声明自动变量。自动变量,只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明。
break:跳出当前循环
case:开关语句分支
char:字符型
const:声明只读变量,初始化后不能被更改
continue:结束当前循环,开始下一轮循环
default:开关语句中的“其它”分支
do:循环语句的循环体
double:双精度浮点型
else:条件语句否定分支(与 if 连用)
enum:声明枚举类型
extern:声明变量或函数是在其它文件或本文件的其他位置定义
float:单精度浮点型变
for:一种循环语句
goto:无条件跳转语句
if:条件语句
int: 整型
long:长整型
register:声明寄存器变量
return :子程序返回语句(可以带参数,也可不带参数)
short:短整型
signed:有符号类型
sizeof:计算数据类型长度或变量长度(即所占字节数)
static:声明静态变量
struct:声明结构体类型
switch : 用于开关语句
typedef:用以给数据类型取别名
unsigned:无符号类型
union:声明共用体类型
void:声明函数无返回值或无参数,声明无类型指针
volatile:说明变量在程序执行中可被隐含地改变
while:循环语句的循环条件
二、C++关键字
关键字(keyword)又称保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(preprocessing-token)中区别出来,剩下的标识符作为记号(token),用于声明对象、函数、类型、命名空间等。不能声明与关键字同名的标识符。
ISO C++98/03关键字共63个。
asm | do | if | return | typedef |
---|---|---|---|---|
auto | double | inline | short | typeid |
bool | dynamic_cast | int | signed | typename |
break | else | long | sizeof | union |
case | enum | mutable | static | unsigned |
catch | explicit | namespace | static_cast | using |
char | export | new | struct | virtual |
class | extern | operator | switch | void |
const | false | private | template | volatile |
const_cast | float | protected | this | wchar_t |
continue | for | public | throw | while |
default | friend | register | true | |
delete | goto | reinterpret_cast | try |
asm
用于语法:
asm-definition:
asm ( string-literal ) ;
意义由实现定义,典型实现中传输其中的字符串给汇编器。
auto
在C++98/03中这个这个关键字用于声明块中的变量的生存期为自动生存期,若是对象同时具有自动存储类,即生存期在块结束时结束。这样的变量被称为局部变量。这个关键字不常用,因为即便省略,声明的默认就是auto的。
*_cast
即const_cast、dynamic_cast、reinterpret_cast、static_cast。
C++风格的类型转换。dynamic_cast是动态的,需要运行时支持;其它都是静态检查,相比C风格的类型转换更加细化,增强了类型安全性。
bool,true,false
bool即布尔类型,属于基本类型中的整数类型,取值为真和假。true和false分别表示真和假。注意,C语言中没有bool类型。
break,continue,goto
break用于跳出for或while循环或switch。continue用于跳转到循环起始。goto用于无条件跳转到函数内的标号。结构化程序较少使用goto,更多使用循环代替。
case,default,switch
switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。
catch,throw,try
用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。
char,wchar_t
表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。
const,volatile
const和volatile是类型修饰符。用于声明变量。
const表示只读类型(指定类型安全性,保护对象不被意外修改),
volatile 关键字和 const 对应,volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
struct,class,union
用于类型声明。
class是一般的类类型。
struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。
union是联合体类型。
delete,new
new用来生成对象并分配内存,delete用来销毁对象并回收内存。
do,for,while
循环语句的组成部分。C++和C语言支持do-while循环、for循环和while循环。
double、float、long、int、short、signed、unsigned
数值类型。
signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;其它整数类型的signed省略或不省略,含义不变。
signed或unsigned可单独作为类型,相当于signed int和unsigned int。
double和float专用于浮点数,double表示双精度,float表示单精度。
其它关键字表示整数类型。从占用空间大小(sizeof)来看,保证char<=short<=int<=long<=long long。
if,else
条件语句的组成部分。
enum
构成枚举类型名的关键字。
explicit
这个关键字修饰构造函数声明,表示显式构造函数(模版),显式构造函数不参与特定的重载。
extern, export
为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准C++新增加的关键字export(导出/出口/输出)。
friend
声明友元,使其不受访问权限控制的限制。
inline
声明定义内联函数,提示编译时内联——将所调用的代码嵌入到主调函数中。注意是否内联取决于实现——编译器有权不实际内联,如果它认为这是必要的或更符合预期的目标代码质量。
mutable
用于类的非静态非const数据成员,表示不受到成员函数的const的限制,可以在const成员函数中使用。
namespace
表示命名空间——其中可以声明若干标识符,组成的名称与其它命名空间不冲突。
可以声明一个命名空间或命名空间别名。
operator
和操作符连用,指定一个重载了的操作符函数。
private,protected,public
指定类成员或基类中的名称的访问权限控制。
register
提示声明的对象被放入寄存器中以便得到更好的性能。同inline类似,并非强制;不同的是这个提示经常被现代的编译器无视,因此C++11中被标记为过时的。
return
子程序返回语句,终止当前函数执行,使控制流返回到主调函数的调用后。若返回类型不是void可以同时带返回值。
static
和C语言类似,声明静态存储期对象。在C++还有另一个用途——用于类作用域声明,表示声明的成员是类共有的,不需要通过类的对象访问。
sizeof
返回类型名或表达式具有的类型对应的大小。
template
声明模板,实现泛型和参数化编程。
this
this是一种实体,仅在类的非静态成员中使用,是指向类的对象的指针。
typedef
用以给数据类型取别名。
virtual
声明虚基类或虚函数。具有虚基类或虚函数的类是多态类(polymorphic class),需要运行时提供支持来判断成员函数调用分派到的具体类型。
typeid
返回指针或引用所指对象的实际类型。
typeid是操作符,不是函数。
typename
告诉编译器是一个类型,不是一个成员。
用在模板定义里,标明其后的模板参数是类型参数,是class的同义词,可被class代替。
using
有两种基本用法:using声明和using指示(using namespace ...)。
前者是声明,引入命名空间或基类作用域内已经被声明的名称。后者引入命名空间内所有的名称。
void
特殊的“空”类型,指定函数无返回值或无参数。
三、Java关键字
Java关键字是事先定义的,有特别意义的标识符,有时又叫保留字。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
Java关键字有50个。
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 用来进行程序调试 |
boolean | 基本数据类型之一,布尔类型 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范[1] |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
四、Python 2.7关键字
Python 2.7中的关键字有31个
and | del | from | not | while | as | elif |
---|---|---|---|---|---|---|
global | or | with | assert | else | if | pass |
yield | break | except | import | class | exec | |
in | raise | continue | finally | is | return | def |
for | lambda | try |
1.and:表示逻辑‘与’
2.del:用于list列表操作,删除一个或者连续几个元素。
3.from :导入相应的模块,用import或者from...import
4.not:表示逻辑‘非’
5.while:循环
6.as:as单独没有意思,要与with一起使用,with....as
例子:
with open(“/tmp/foo.txt”) as file:
data = file.read()
7.elif : 和if配合使用的,if语句中的一个分支用elif表示。
8.global : 定义全局变量
9.or:表示逻辑“或”
10.with:和as一起用
11.assert:表示断言。用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError
12.else:条件判断,用于选择分支
13.if:条件判断,用于选择分支
14.pass:当你在编写一个程序时,执行语句部分思路还没有完成,这时你可以用pass语句来占位,也可以当做是一个标记,是要以后来完成的代码。比如下面这样:
def dosomething():
pass
15.yield: 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。
16.break:作用是终止循环,程序走到break的地方就是循环结束的时候。注意,如果是多层循环的话,break只能终止最里边那层的循环。
17.except:和try一起使用,用来捕获异常。try...except或try...except...finally
18.import:用来导入模块,有时这样用from....import,作用与C/C++的include和Java的import类似
19.print:输出
20.class:定义类
21.exec:可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子
>>> exec \'print "Hello World"\'
22.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b
23.raise:raise可以显示地抛出异常。一旦执行raise语句,后面的代码就不执行了
24.continue:跳过continue后面循环块中的语句,继续进行下一轮循环。
25.finally :与try和except一起使用:try...except..finally,finally中的语句一定会被执行
26.is:Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值。
is判断的是a对象是否就是b对象,是通过id来判断的。
例子:
if(a is b)
print “a is b”
27.return:用于跳出函数,可以返回一个值也可以不返回值
28.def:用于定义方法
29.for:for....in 一起使用:遍历容器中的每个元素
30.lambda:即匿名函数,简化了函数定义的书写形式,使代码更为简洁,但是使用函数的定义方式更为直观,易理解。
下面两种写法是等价的。
例1:
g = lambda x: x+1
例2:
def g(x) :
return x+1
31.try:出现在异常处理中,使用格式为:try...except或try...except...finally。
try中放想要执行的语句,except捕获异常,finally做清理工作。
变量类型
Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
一、数字
数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:
var1 = 1
var2 = 10
您也可以使用del语句删除一些对象的引用。
您可以通过使用del语句删除单个或多个对象的引用。例如:
del var
del var_a, var_b
例1
Python支持四种不同的数字类型:
int有符号整型
long长整型
float浮点型
complex复数,可用a + bj来表示,也可用complex(a, b)来表示
例2
二、字符串
python中,字符串用单引号或双引号包含起来。
python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
加号(+)是字符串连接运算符,星号(*)是重复操作。
例3
# -*- coding: UTF-8 -*-
str = "Hello World!"
print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第2个至第5个之间(下标从0开始算,不含第5个)的字符串
print str[3:] # 输出从第四个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
运行结果:
Hello World!
H
llo
lo World!
Hello World!Hello World!
Hello World!TEST
三、列表
List(列表) 是Python 中使用最频繁的数据类型。相当于C/C++/Java中的数组。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。
例4
# -*- coding: UTF-8 -*-
list = [ \'Theodore\', 786 , 2.23, \'hello\', 70.2 ]
tinylist = [123, \'john\']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
运行结果:
[\'Theodore\', 786, 2.23, ‘hello’, 70.2]
Theodore
[786, 2.23]
[2.23, \'hello\', 70.2]
[123, \'john\', 123, \'john\']
[\' Theodore \', 786, 2.23, \'hello\', 70.2, 123, \'john\']
四、元组
元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
例5
# -*- coding: UTF-8 -*-
tuple = ( \'Tom\', 786 , 2.23, \'hi\', 70.2 )
tinytuple = (123, \'john\')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第三个的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
运行结果:
(\'Tom\', 786, 2.23, \'hi\', 70.2)
Tom
(786, 2.23)
(2.23, \'hi\', 70.2)
(123, \'john\', 123, \'john\')
(\'Tom\', 786, 2.23, \'hi\', 70.2, 123, \'john\')
以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的。
例6
# -*- coding: UTF-8 -*-
tuple = ( \'Hero\', 786 , 2.23, \'john\', 70.2 )
list = [ \'Hero\', 786 , 2.23, \'john\', 70.2 ]
tuple[2] = 1000 # 元组中是非法应用
list[2] = 1000 # 列表中是合法应用
五、字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
例7
# -*- coding: UTF-8 -*-
dict = {}
dict[\'one\'] = "This is one"
dict[2] = "This is two"
tinydict = {\'name\': \'john\',\'code\':6734, \'dept\': \'sales\'}
print dict[\'one\'] # 输出键为\'one\' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
运行结果:
This is one
This is two
{\'dept\': \'sales\', \'code\': 6734, \'name\': \'john\'}
[\'dept\', \'code\', \'name\']
[\'sales\', 6734, \'john\']
以上是关于小朋友学Python的主要内容,如果未能解决你的问题,请参考以下文章