python3精简笔记(一)-输入输出,类型,循环
2017-04-07 11:48
316 查看
输入输出
input()输入函数
print()输出函数
程序一运行,会首先打印出
please enter your name:,这样,用户就可以根据提示,输入名字后,得到
hello, xxx的输出:
name = input('please enter your name: ') print('hello,', name)
输出的时候
,分隔开,会自动加一个空格
python基础
#开头的是注释。
当语句以冒号
:结尾时,缩进的语句视为代码块。
例子:
# print absolute value of an integer: a = 100 if a >= 0: print(a) else: print(-a)
比较坑的是 编辑器很难像格式化java一样格式化python, 一般缩进4个空格,在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
python数据类型
在Python中,能够直接处理的数据类型有以下几种:整数
浮点数
字符串
布尔值
空值 none
变量
整数
python整数没有大小限制字符串
转义字符\可以转义很多字符,比如
\n表示换行,
\t表示制表符,字符
\本身也要转义,所以
\\表示的字符就是
\
为了简化,Python还允许用
r''表示
''内部的字符串默认不转义
>>> print('\\\t\\') \ \ >>> print(r'\\\t\\') \\\t\\
用
\n写在一行里不好阅读,为了简化,Python允许用
'''...'''的格式表示多行内容
>>> print('''line1 ... line2 ... line3''') line1 line2 line3
布尔值
布尔值可以用and、
or和
not运算。
and运算是与运算,只有所有都为
True,
and运算结果才是
True
or运算是或运算,只要其中有一个为
True,
or运算结果就是
True:
not运算是非运算,它是一个单目运算符,把
True变成
False,
False变成
True
变量
python变量没有类型约束 没有关键字声明#声明变量 a为 1 a=1
注意
python除法运算分为两种 ,/和
//
/无论是否除尽结果都为浮点数,
//为地板除 ,除不尽也为整数
9/3 =3.0 10//3=3
python编码
最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言对于单个字符的编码,Python提供了
ord()函数获取字符的整数表示,
chr()函数把编码转换为对应的字符:
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'
encode()和decode()
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把
str变为以字节为单位的
bytes。
Python对bytes类型的数据用带b前缀的单引号或双引号表示:
x = b'ABC'
要注意区分
'ABC‘和
b'ABC',前者是字符串,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
以Unicode表示的str通过
encode()方法可以编码为指定的
bytes
>>> 'ABC'.encode('ascii') b'ABC' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87'
decode()方法把bytes变为str
len()
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:>>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文'.encode('utf-8')) 6
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
字符串格式化
在Python中,采用的格式化方式和C语言是一致的,用%实现,
%运算符就是用来格式化字符串的。在字符串内部,
%s表示用字符串替换,
%d表示用整数替换,有几个
%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个
%?,括号可以省略。举例如下:
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
>>> '%2d-%02d' % (3, 1) ' 3-01' >>> '%.2f' % 3.1415926 '3.14'
如果你不太确定应该用什么,
%s永远起作用,它会把任何数据类型转换为字符串
字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
>>> 'growth rate: %d %%' % 7 'growth rate: 7 %'
list
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。>>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates ['Michael', 'Bob', 'Tracy']
用len()函数可以获得list元素的个数。
不能越界,记得最后一个元素的索引是len(classmates) - 1。
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:
>>> classmates[-1] 'Tracy'
-2 为倒数第二个 -3 倒数第三个 以此类推
list方法
append()追加元素
insert()插入元素
pop()删除最后元素或指定元素
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
classmates.append('Adam') classmates.insert(1, 'Jack') classmates.pop() classmates.pop(1) classmates[1] = 'Sarah'
tuple
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改定义方式用
()定义
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:
>>> t = (1, 2) >>> t (1, 2)
注意
要定义一个只有1个元素的tuple,如果你这么定义:
>>> t = (1) >>> t 1
定义的不是tuple,是
1这个数!这是因为括号
()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号
,,来消除歧义:
>>> t = (1,) >>> t (1,)
Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。
条件判断
关键字:if
else
elif
elif是
else if的缩写,完全可以有多个
elif,所以if语句的完整形式就是:
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
python并不像Java语言中使用
{}包裹执行语句, python是识别冒号
:后的缩进的
age = 3 if age >= 18: print('your age is', age) print('adult') else: print('your age is', age) print('teenager')
输出
your age is 3 teenager
下面代码,只要x是非零数值、非空字符串、非空list等,就判断为
True,否则为
False。
if x: print('True')
注意
不要忘了写冒号:
条件判断的问题
最后看一个有问题的条件判断。很多同学会用input()读取用户的输入,这样可以自己输入,程序运行得更有意思:birth = input('birth: ') if birth < 2000: print('00前') else: print('00后')
上面代码执行后,输入数字会报错, 因为input输入的都是字符串,需要通过
int()函数转换成整数
s = input('birth: ') birth = int(s) if birth < 2000: print('00前') else: print('00后')
循环
循环分为for...in和
while循环
for…in
一种是for…in循环,依次把list或tuple中的每个元素迭代出来比如计算
list中数的和
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum)
如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个
range()函数,可以生成一个整数序列,再通过
list()函数可以转换为list。比如
range(5)生成的序列是从0开始小于5的整数:
>>> list(range(5)) [0, 1, 2, 3, 4]
range(101)就可以生成0-100的整数序列,计算如下:
sum = 0 for x in range(101): sum = sum + x print(sum)
while
只要条件满足,就不断循环,条件不满足时退出循环。sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum)
dict
Python内置了字典:dict的支持,
dict全称
dictionary,Java语言中对应为map,使用键-值(key-value)存储,具有极快的查找速度。
例子:
>>> d = {'小明': 95, '小于': 75, '小红': 85} >>> d['小明'] 95
如果key不存在就会报错
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> '老王' in d False
二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('老王') >>> d.get('老王', -1) -1
注意:返回None的时候Python的交互式命令行不显示结果。
要删除一个key,用
pop(key)方法,对应的value也会从dict中删除:
>>> d.pop('小于') 75 >>> d {'小明': 95, '小红': 85}
正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合,重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3]) >>> s {1, 2, 3}
通过
add(key)方法可以添加元素到set中,可以重复添加,但不会有效果;
通过
remove(key)方法可以删除元素。
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,
&取交集,
|取并集:
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}
更多精彩请关注微信公众账号likeDev
相关文章推荐
- MOOC的Python笔记(二)python数据类型与输入输出
- python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环
- python学习笔记(一)运行,输入输出,数据类型
- Python3学习笔记06-循环设计、循环对象、函数对象、错误处理、动态类型
- python 学习笔记day05-python字典和集合、条件和循环、文件和输入输出
- python学习手册笔记--第4章--对象类型
- python学习手册笔记--第5章--数字--第6章--动态类型
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- Python中的集合类型(笔记)
- Python学习笔记一:数据类型转换
- python学习笔记3-核心类型-列表
- Python学习笔记整理(三)Python中的动态类型简介
- python笔记(二) - 数据类型
- python学习笔记5-核心类型-元组和文件及其他
- Python学习笔记之集合类型(set, frozeset)
- python学习笔记1-核心类型-数字
- Python源码学习笔记(1 基本数据类型)
- 090811c语言学习第五章笔记(类型变换,自定义函数,循环条件等)
- 深入Python3 (Dive Into Python3)笔记2--内置数据类型
- python学习笔记(一) 基本数据类型及运算