Python基础
#####清屏功能:#转自廖雪峰Python#
再cmd环境中,写:
import os
os.system('cls')
CTRL+F6为 重启 restart
1、数据类型和变量
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648
-2147483647
。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。
Python还允许用r''
表示''
内部的字符串默认不转义
为了简化,Python允许用'''...'''
的格式表示多行内容
地板除 10 // 3
得到的结果为3
转义字符的使用,请打印出以下变量的值:
n = 123 f = 456.789 s1 = 'Hello, world' s1 = '\'Hello, world\'' print("s1 =", s1) s2 = 'Hello, \'Adam\'' s2 = '\'Hello, \\\'Adam\\\'' print s2
s3 = r'Hello, "Bart"'
# Python还允许用r''表示''内部的字符串默认不转义
s3 = 'r\'Hello, "Bart"\''
print s3
s4 = r'''Hello, Lisa!'''
s4 = 'r\'\'\'Hello, Lisa!\'\'\''
print s4
2、字符串和编码
ASCII编码是1个字节,而Unicode编码通常是2个字节,UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,
常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节,节约空间
python是以unicode的,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
用%%
来表示一个%
:转义需要输出 "%"
在Python中,采用的格式化方式和C语言是一致的,用%
实现
'Hi, %s, you have $%d.' % ('Michael', 1000000)
print('%2d-%02d' % (3, 1)) #输出 3-01
print('%.2f' % 3.1415926) #输出3.14
str和bytes互相转换时,需要指定编码。最常用的编码是UTF-8
# 小明的成绩从去年的72分提升到了今年的85分,
# 请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',
# 只保留小数点后1位:
s1 = 72
s2 = 85
r = (s2-s1)/s1*100
print (r)
print('Hello, {0}, 成绩提升了{1:.1f}%'.format('小明', r))
print('%s成绩提升了 %.1f%%' % ('小明', r))
3.使用list和tuple
List:
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素:
list里的元素可以包含list,S=['python','jack',['java','mysql'],123]
S中java:S[2][0],可以视为二维数组
Tuple:一种有序列列表叫元组,元素在初始化时被确定,以后不可修改
只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:t=(1,)
实例一个指向list可变的Tuple
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
#其实变的不是tuple的元素,而是list的元素 tuple所谓的“不变”是说,tuple的每个元素,指向永远不变
4.条件判断
在议论input():
s = input('birth: ')
birth = int(s) #input()函数返回的是str,需要强制类型转换为整数
if birth < 2000:
print('00前')
else:
print('00后')
5.循环
range(101)就可以生成0-100的整数序列
sum = 0
for x in range(101):
sum = sum + x
print(sum) #5050
while循环
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
continue循环
continue的作用是提前结束本轮循环,并直接开始下一轮循环。
如果我们想只打印奇数,可以用continue语句跳过某些循环:
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
6.使用dic 和set
dic:
python内置了字典 dic dictionary,比如Java里的key-value值对
d={'a':1,'b':2,'c':3}
>>> d[a]
也可以通过key放入,d['aa']=1
dic有的优点:
1.查找和插入的时间随着元素的+而+
2.需要占用大量的内存,空间换取时间的做法
注意点:dic的key是不可变对象,在python中 字符串 int 可作为key,而list是不可变的,不可以做为key
set:
不存储value,key是唯一的 s=set([1,1,2,3,4])
s.add(5),s.remove(key)
set可以看成数学意义上的无序和无重复元素的集合,两个set可以做数学交集 并集操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
再议不可变对象
str是不变对象,而list是可变对象
>>> a = 'abc' >>> b = a.replace('a', 'A') >>> b 'Abc' >>> a 'abc'
a
是变量,而'abc'
才是字符串对象!有些时候,我们经常说,对象a
的内容是'abc'
,但其实是指,a
本身是一个变量,它指向的对象的内容才是'abc'
:
当我们调用a.replace('a', 'A')
时,实际上调用方法replace
是作用在字符串对象'abc'
上的,而这个方法虽然名字叫replace
,但却没有改变字符串'abc'
的内容
。相反,replace
方法创建了一个新字符串'Abc'
并返回,如果我们用变量b
指向该新字符串,就容易理解了,变量a
仍指向原有的字符串'abc'
,但变量b
却指向新字符串'Abc'
了:
?tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。?
ss=set([t[0],[t[1][0],t[1][1]]]) 报错unhashable type: 'list'
tuple是不可变的,但是其元素list是可变的,set的key需要不可变的对象
print('%s的十六进制为: %s' %(x,hex(x)))
我希望有个如你一般的人,
如山间清爽的风,
如古城温暖的光,
只要最后是你就好。
今天, 你路过了谁?
谁又丢失了你呢?