/usr/bin/env python
# -*- coding:utf8 -*-
# 加上上面一句支持中文编码
# A first Python script
print (2 ** 10) #Raise 2 to a power
x = 'Spam!'
print (x * 10) #sting repetition
y = 111
z = 10
#number
print ( y*z ) #乘法
print (z ** y) #次方
#String*****************************************************
x = 'what`syouname ?\n' #换行符
print (len(x)) #长度
print (x[0]) #第一个
print (x[-1]) #倒叙第一
import random #引入随机库
print (random.choice([1,2,3,4])) #随机数
print (x[1:6]) #取到1-6中间位置字符串
answer = 'my name is horck !'
print (x + answer) #字符串拼接
shop = "shopName" #单双引号都为字符串
print (shop)
#序列(数组)*****************************************************
list10 = [123,'sdsds',1.22] #序列
print (len(list10)) #元素个数
print (list10[0]) #第一个元素
print (list10[:1]) #生成新的序列 :-1到最后一个
list1 = list10 + [4,5,6] #生成新的序列 但是list数据还是不变
print (list10) # [123, 'sdsds', 1.22]
print (list1) # [123, 'sdsds', 1.22, 4, 5, 6]
list10.append('NI')
print (list10) # [123, 'sdsds', 1.22, 'NI']
list10.append(222) # 添加
list10.remove(1.22) #移除 或者 .pop
print (list10) # [123, 'sdsds', 'NI', 222]
list10.sort() #排序
print (list10) #[123, 222, 'NI', 'sdsds']
list10.reverse() #反转
print (list10) # ['sdsds', 'NI', 222, 123]
#序列嵌套
list2 = [[0,1,2],
[3,4,5],
[6,7,8]
]
print (list2[1]) # [3, 4, 5]
print (list2[2][0]) #取值 6
#字典(搜索最快的取值方法)*************************************************************************
person = {'name':'horck',
'hobby':'sleep',
'age':12
}
print (person) #{'hobby': 'sleep', 'age': 12, 'name': 'horck'}
person1 = dict(name='horck', hobby='sleep', age=12)
print (person1) # {'hobby': 'sleep', 'age': 12, 'name': 'horck'}
print (person['hobby']) # sleep
person3 = {}
person3['gender'] = 'man'
person3['fa'] = 'horck'
print (person3) # {'gender': 'man', 'fa': 'horck'} 如果字典没有该键 就会重新创建新的键值对
person3['fa'] = 'yours'
print (person3) # {'gender': 'man', 'fa': 'yours'}
#for循环****************************************************************************************
personInfo = {'name':'sssd','age':12,'gender':'woman'}
keys = personInfo .keys() #取到key值
print (keys) # ['gender', 'age', 'name']
keys.sort() #排序
print (keys) #['age', 'gender', 'name']
for key in keys:
print ('key--->',key,'value-->',personInfo[key])
# ('key--->', 'age', 'value-->', 12)
# ('key--->', 'gender', 'value-->', 'woman')
# ('key--->', 'name', 'value-->', 'sssd')
squares = [x ** 2 for x in [2,3,5,6]]
print (squares) #[4, 9, 25, 36]
#元组 类似序列 创建之后就为不可变(升序降序等失效)***********************************************************************
T= (3,5,7,8,'sdsd')
print (T) #(3, 5, 7, 8, 'sdsd')
print (T[0]) # T[0] = 11 这样写会报错
#if if else 判断*************************************************************************************************
dict = {'a':11,'b':'2222','c':444}
if 'a' in dict: #判断'f'这个key是否存在
print ('miss')
else:
print (dict['sf'])
value = dict['a'] if 'f' in dict else 'sss' #if else 判断
print (value)
#文件(先创建名为 'data.txt文件')*************************************************************
wj = open('data.txt','w') #写文件 并以'w'形式写数据
wj.write('Hellos\n') #测验这种形式是完全覆盖写入
wj.write('worlds\n')
wj.close() #写入
rwj = open('data.txt') #读文件 默认以read形式
rwjtxt = rwj.read() #文件内容以String形式输出 (read接受一个字节大小,readline 每次读一行)
print (rwjtxt) # Hellos worlds
print (dir(rwj)) #获取所有属性 ['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
#TIP open函数能实现大部分文件处理,对于更高级的任务,Python有额外的类文件工具,先进先出队列(FIFO)、套接字、通过键访问文件,对象持久、基于描述符的文件、关系数据库和面向对象数据库等。
#其他核心类型 ************************************************************************
#集合 不可变无序
setx = set('spam') #创建方法 2.6 和 3。0 y={'a','b','c'} 3.0创建方法
sety = set('apxxmm')
print (setx) # set(['a', 'p', 's', 'm'])
print (sety) # set(['a', 'p', 'm', 'x'])
print (setx&sety) #交集 set(['a', 'p', 'm'])
#type 返回这个类的类型 ****************************************
#举个粒子
list3 = [1,2,3,4,5,5]
print (type(list3)) #<type 'list'> 2.6 <class 'list'> 3.0
print (type(type(list3))) # <type 'type'> 2.6 <class 'type'> 3.0
if type(list3) == list: #判断是否是list类型 与type(list3) == type([]) 同样
print ('yes')
if isinstance(list3,list): #同上
print ('YES')
#类 Class
class personClass:
def __init__(self,age,pay,name): #初始化方法 添加属性
self.age = age
self.pay = pay
self.name = name
def lastName(self): #取值方法 不带参数
return self.name.split()[-1]
def giveRaise(self,percent):
self.pay *= (1.0 +percent) #赋值方法 带参
bob = personClass(12,4000,'bob smith')
print (bob.name) #bob
print (bob.lastName()) #smith
bob.giveRaise(.10)
print (bob.pay) # 4400.0
总结问答
1. 列举Python 中四个核心数据类型名称
数字、字符串、列表、字典、元组、文件和集合一般被认为核心对象(数据)类型。类型、None和布尔型有时也被定义在这些类型中。还有多种数据类型(整数,浮点,复数,分数和十进制数)和多种字符串类型(2.x 中的一般字符串和Unicode字符串,以及3.x中的文本字符串和字节字符串)。
2.为什么我们把它们称作“核心”数据类型?
它们被称为“核心”类型是因为它们就是Python语言的一部分,并且是有效的,为了建立其他的对象,通常必须调用被导入模块的函数。大多数核心类型都有特定语法生成其对象。
3.“不可变性”代表了什么,哪三种Python的核心类型被公认为不可变类型?
就是创建之后不能被改变的对象,Python中数字、字符串、元组都是不可变的,虽不可改变一般重新创建。
4. “序列”是什么意思? 哪三种Python核心类型被认为是这个分类中的?
是对位置进行排序对象的集合,字符串、列表和元组是python中所有的序列。它们有一般序列的操作,索引、合并以及分片。
5.映射是什么意思? 那种Python的核心类是映射?
“映射”就是将键值互相关联的对象的集合 字典是Python中唯一的映射类核心类,专有的键值对应关系,无序。
6. 什么是多态?为什么我们要关心多态
“多态”意味着一个操作符的意义取决于被操作对象。这将变成使用好Python的关键思想之一,不要把代码限制在特定的类型上,使代码自动适于多种类型。