python学习之1python基础(廖雪峰)

一、一些引子

1、使用文本编辑器编写与执行程序

(1)使用文本编辑器,例如Sublime Text进行编写。完成后选择一个目录进行保存,如c:\work,如把文件保存为hello.py.

(2)运行程序时,先打开命令行窗口(cmd),将当前目录切换到hello.py的目录,即可运行。

运行hello.py是>python hello.py命令,如果当前目录不是hello.py的存放目录会报错,切换目录使用cd命令:>cd C:\work。而后可以用>dir查看当前目录的内容,>more hello.py可以查看hello.py的内容。

因此,用文本编辑器写python程序,完成后保存为后缀为.py的文件,就可以通过cmd运行这个文件了。

2、输入和输出

(1)输出

print()函数是python的输出函数,写法如:python('hello world')

print()函数还可以接受多个字符串,用逗号‘,’隔开即可。打印时遇到逗号‘,’会输出一个空格,如print('hello','world')的输出结果为:hello world

(2)输入

input()函数是python的输入函数,用法如:*name=input()*可以让用户进行输入,并存放到name变量里。如果想要打印变量name的内容,用print(name)即可。

二、python基础

1、数据类型和变量

(1)整数:Python可以处理任意大小的整数,包括负整数。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示。

(2)浮点数:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

(3)字符串:字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。如果字符串内部既包含'又包含",可以用转义字符\来标识,比如:'I\'m \"OK\"!'。如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义。

(4)空值:空值是python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

(5)除法:在python中,有两种除法,一种是/,这种除法的结果均为浮点数,是精确的除法。另一种除法是//,称为地板除,两个整数相除的结果仍然是整数,该种除法只取结果的整数部分。%是取余。

(6)**运算:进行幂运算: print(100**2) 输出结果是10000.

2、编码

(1)ASCII编码是美国人发明的,只包括英文字母、数字和一些符号,共127个字符,用1字节(byte)即可表示。但是处理中文一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以中国制定了GB2312编码,将中文编进去。相似,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

(2)现代操作系统和大多数编程语言都直接支持Unicode,通常用两个字节表示一个字符(偏僻的字符就需要4个字节)。

(3)ASCII编码和Unicode编码的区别:ASCII编码是1个字节,Unicode通常是两个字节。

(4)Unicode的出现也带来了一些问题:统一为Unicode编码,乱码问题可以解决。但是如果一个文本全是英文,用Unicode编码就比ASCII编码多一倍的存储空间,在存储和传输上就变得不划算。

(5)为了解决(4)的问题,出现了“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

(6)在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码;用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件;浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器,所以可以看到很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。

3、字符串

(1)在最新的python3版本中,字符串是以Unicode编码的,所以python的字符串支持多语言。

(2)ord()函数可以获取字符的整数表示,如ord('A'),结果为65.ord('中'),结果为20013;chr()函数可以把编码转换成对应的字符,如chr(20013)d的结果为‘中’。

(3)以Unicode表示的str通过encode()方法可以编码为指定的bytes,如'ABC'.encode('ascii'); '中文'.encode('utf-8')。反过来,要把bytes变为str,就需要用decode()方法,如 b'ABC'.decode('ascii')

(4)由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

注意:申明了UTF-8编码并不意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码:通常在文本编辑器的encoding栏下。

4、使用list

(1)list:列表。list是一种有序的集合,可以随时添加和删除其中的元素,是可变的有序表。如列出班级中所有同学的名字,可以用一个list表示:

classmates=['Michael','Bob','Tracy']

当然,list中的元素的数据类型可以不同,甚至可以内嵌list:

L=['apple',123,True]
s=['python','java',['asp','php'],'scheme']

要获取'php': s[2][1] 

(2)用索引获取list的元素

用len()函数可以获得list元素的个数:

len(classmates)

用索引来访问list中每一个位置的元素,记得索引是从0开始的:

classmates[0]

classmates[2]

用索引倒着取元素,可以:

classmates[-1]

classmates[-3]

(3)添加和删除

用append()函数可往list中追加元素至末尾:

classmates.append('Adam')

用insert()函数可将元素插到list的指定位置,如索引号为1的位置:

classmates.insert(1,'Adam')

 用pop()函数可删除list末尾的元素:

classmates.pop()

 用pop(i)可删除指定位置的元素,其中i是索引位置:

classmates.pop(2)

 替换list中的某个元素,可直接对相应位置赋值:

classmates[1] = 'Sarah'

 5、使用tuple

tuple:元组。类似于list,也是一种有序列表,但与list的区别:tuple一旦初始化就不能修改。

(1)创建元组:

classmates = ('Michael', 'Bob', 'Tracy')

注意:若定义只有一个元素的tuple,为消除歧义,必须加一个逗号,

t = (1,)

(2)获取tuple的元素:

classmates[0]
classmates[-1]

 6、条件判断

条件判断的完整形式:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

具体如:

age = 20
if age >= 6:
    print('teenager')
elif age >= 18:
    print('adult')
else:
    print('kid')

 7、循环

 python的循环有两种,一种是for...in循环;另一种是while循环。

(1)for...in循环

使用for...in循环,依次把list或tuple中的每个元素迭代出来:

#计算1-10的整数之和
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)

 

range()函数:生成一个整数序列。可再通过list()函数转换为list。注意:list(x)生成的整数是从0开始到x-1。

#计算1-100的整数之和
sum = 0
for x in range(101):
    sum = sum + x
print(sum)

 

 (2)while循环:条件满足,就不断循环,直到不满足循环条件。

#计算100以内所有奇数之和
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

 

下面讨论break和continue:

(1)break:执行循环时,遇到break就提前退出循环。

(2)continue:执行循环时,遇到continue就跳过当前循环,直接开始下一次循环。

这两个语句通常都必须配合if语句使用。

8、dict

dict:字典,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

#创建一个“名字”-“成绩”的dict
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
#获取Michael的成绩
d['Michael']
#添加学生Adam的信息
d['Adam'] = 67

 判断某个key是否存在:

d={'Michael':100,'Bob':90,'Tracy':80}
print('Tom' in d) #返回False
print(d.get('Tomy'))       #返回None
print(d.get('Tomy',-1))  #返回指定的-1

 

需要注意的是,1、dict的key必须是不可变对象。2、dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

 所以,dict是用空间来换取时间的一种方法。

 9、set

set和dict类似,也是一组key的集合,但不存储value。

set和dict的唯一区别在于没有存储对应的 value。

由于key不能重复,所以,在set中,没有重复的key,重复元素会被自动过滤。

创建set

#要创建set,需要提供一个list作为输入集合:
s=set([1,2,3])

 使用add()函数进行添加

s=set([1,2,3])
s.add(4)

 

使用remove()函数删除元素

s.remove(3)

 

转载于:https://www.cnblogs.com/zj83839/p/7593731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值