您的位置:首页 > 编程语言 > Python开发

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: