python基础

数据类型和变量

Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。
变量,常量,整数,浮点数的知识与c相似
*对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5。
*整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
*比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符
注意:
除法:(结果为浮点数)

>>> 9 / 3
3.0

地板除:(结果为整数)

>>> 10 // 3
3

求余:(结果为整数)

>>> 10 % 3
1

字符串和编码

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

等价于

>>> '\u4e2d\u6587'
'中文'

以Unicode表示的str通过encode()方法可以编码为指定的bytes:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

Python中采用的格式化方式和C语言是一致的,用%实现,举例如下:

print("%s is a %s." %("peiqi","pig"))

输出:

peiqi is a pig.

在这里插入图片描述
注意:
1.%s永远起作用,它会把任何数据类型转换为字符串
2.字符串里面的%是一个普通字符:这个时候就需要转义,用%%来表示一个%

另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)

'Hello, 小明, 成绩提升了 17.1%'

使用list和tuple

list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们

list

hero =['diaochan','xiaoqiao','daji']
print(hero)

['diaochan', 'xiaoqiao', 'daji']

通过索引访问:

print(hero[0])
print(hero[1])
print(hero[2])

diaochan
xiaoqiao
daji

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:

print(hero[-1])
print(hero[-2])
print(hero[-3])

daji
xiaoqiao
diaochan

添加:

hero =['diaochan','xiaoqiao','daji']
hero.append('zhouyu')
print(hero)

['diaochan', 'xiaoqiao', 'daji', 'zhouyu']

把元素插入到指定的位置,比如索引号为1的位置:

hero =['diaochan','xiaoqiao','daji']
hero.insert(1,'zhouyu')
print(hero)

['diaochan', 'zhouyu', 'xiaoqiao', 'daji']

删除:

hero =['diaochan','xiaoqiao','daji']
hero.pop()
print(hero)

['diaochan', 'xiaoqiao']

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

hero =['diaochan','xiaoqiao','daji']
hero.pop(1)
print(hero)

['diaochan', 'daji']

替换:

hero =['diaochan','xiaoqiao','daji']
hero[1]=('wangzhaojun')
print(hero)

['diaochan', 'wangzhaojun', 'daji']

tuple

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,例:

hero =('diaochan','xiaoqiao','daji')

没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,能用tuple代替list就尽量用tuple。
注意:
要定义一个只有1个元素的tuple,如果这么定义:

>>> t = (1)
>>> t

1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t

(1,)

还有一种情况需要注意:

t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print(t)

('a', 'b', ['X', 'Y'])

指向不变:tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。

条件判断

格式:

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

注意不要少写了冒号:
若前面两个判断语句都满足条件,执行第一句,下面不执行
input()读取用户的输入:

birth = input('birth: ')
if birth < 2000:
    print('00前')
else:
    print('00后')

错误原因:input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。
改为:

s = input('birth: ')
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

循环

for

for x in …循环:把每个元素代入变量x,然后执行缩进块的语句。
Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。例如:

print(list(range(11)))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

while

只要条件满足,就不断循环,条件不满足时退出循环

L = ['Bart', 'Lisa', 'Adam']
n = 0
while n <3:
  print("hello,",L[n])
  n = n+1
  
hello, Bart
hello, Lisa
hello, Adam

或者

L = ['Bart', 'Lisa', 'Adam']
n = 0
while n <3:
  print("hello,%s"%L[n])
  n = n+1
  
hello,Bart
hello,Lisa
hello,Adam

break

n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')

1
2
3
4
5
6
7
8
9
10
END

continue

跳过当前的这次循环,直接开始下一次循环

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。

不要滥用break和continue语句

如果程序进入死循环,可以用Ctrl+C退出程序

使用dict和set

dict

dict:字典
例如:

d = {'a':10,'b':20,'c':30}
print(d['b'])

20

添加或者指定数据`

d = {'a':10,'b':20,'c':30}
d['d']=40
print(d['d'])

40

若多次执行,则后面会把前面的数据覆盖掉
要避免数据不存在的错误,有两种办法
(1)通过in判断数据是否存在

d = {'a':10,'b':20,'c':30}
d['d']=40
print('e' in d)

False

(2)通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

d = {'a':10,'b':20,'c':30}
d['d']=40
print(d.get('e'))
print(d.get('e',2))

None
2

用pop(key)方法,对应的value也会从dict中删除:

d = {'a':10,'b':20,'c':30}
d.pop('c')
print(d)

{'a': 10, 'b': 20}

set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

d = set([1,2,3,4,5,1,2,3])
print(d)

{1, 2, 3, 4, 5}

添加:
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果

d = set([1,2,3,4,5,1,2,3])
d.add(4)
print(d)

{1, 2, 3, 4, 5}

删除:
通过remove(key)方法可以删除元素

d = set([1,2,3,4,5,1,2,3])
d.remove(4)
print(d)

{1, 2, 3, 5}

交集、并集等操作:

d = set([1,2,3,4,1])
m = set([2,3,5])
print(d&m)
print(d|m)

{2, 3}
{1, 2, 3, 4, 5}

可变对象:
排序:

d = ['r','a','c','b']
d.sort()
print(d)

['a', 'b', 'c', 'r']

不可变对象:

d = "abc"
print(d.replace('b','B'))
print(d)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值