239 lines
3.1 KiB
Markdown
239 lines
3.1 KiB
Markdown
# 原创
|
||
: Python数据结构(一)——Python数据类型
|
||
|
||
# Python数据结构(一)——Python数据类型
|
||
|
||
## 回顾Python数据类型
|
||
|
||
本系列需要用到的源码:[Python数据结构类封装](https://download.csdn.net/download/ds19991999/10571330)
|
||
|
||
>
|
||
Python支持面向对象的编程模式,这意味这Python在解决问题的过程中重点是数据.
|
||
|
||
|
||
### 基本类型
|
||
|
||
```
|
||
False or True
|
||
```
|
||
|
||
```
|
||
True
|
||
|
||
```
|
||
|
||
```
|
||
not (False or True)
|
||
```
|
||
|
||
```
|
||
False
|
||
|
||
```
|
||
|
||
```
|
||
myList = [1,2,3,4]
|
||
A = [myList]*3
|
||
print(A)
|
||
myList[2]=45
|
||
print(A)
|
||
```
|
||
|
||
```
|
||
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
|
||
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
|
||
|
||
```
|
||
|
||
```
|
||
# 与sort方法合用有效果
|
||
myList.sort()
|
||
myList
|
||
```
|
||
|
||
```
|
||
[1, 2, 4, 45]
|
||
|
||
```
|
||
|
||
```
|
||
myList.reverse()
|
||
print myList
|
||
```
|
||
|
||
```
|
||
[45, 4, 2, 1]
|
||
|
||
```
|
||
|
||
```
|
||
myName = 'dsdshahahads'
|
||
myName.split('s')
|
||
```
|
||
|
||
```
|
||
['d', 'd', 'hahahad', '']
|
||
|
||
```
|
||
|
||
```
|
||
{3,6,"cat",4.5,False,6,6,6,6,6,6,6}
|
||
```
|
||
|
||
```
|
||
{False, 3, 4.5, 6, 'cat'}
|
||
|
||
```
|
||
|
||
### 输入与输出
|
||
|
||
```
|
||
aName = input("Please enter your name ")
|
||
print("Your name in all capitals is",aName.upper(),
|
||
"and has length", len(aName))
|
||
```
|
||
|
||
```
|
||
Please enter your name 'ds'
|
||
|
||
|
||
Your name in all capitals is 'DS' and has length 4
|
||
|
||
```
|
||
|
||
```
|
||
# Python3支持,Python2不支持
|
||
print("Hello","World", sep = "***")
|
||
print("Hello","World", end = "***")
|
||
```
|
||
|
||
```
|
||
Hello***World
|
||
Hello World***
|
||
|
||
```
|
||
|
||
### 控制结构
|
||
|
||
### 异常
|
||
|
||
```
|
||
import math
|
||
try:
|
||
anumber = int(input("Please enter an integer "))
|
||
print(math.sqrt(anumber))
|
||
except:
|
||
print("Bad Value for square root")
|
||
print("Using absolute value instead")
|
||
print(math.sqrt(abs(anumber)))
|
||
```
|
||
|
||
```
|
||
Please enter an integer -3
|
||
|
||
|
||
Bad Value for square root
|
||
Using absolute value instead
|
||
1.73205080757
|
||
|
||
```
|
||
|
||
```
|
||
import math
|
||
try:
|
||
anumber = int(input("Please enter an integer "))
|
||
print(math.sqrt(anumber))
|
||
except Exception as msg:
|
||
print msg
|
||
```
|
||
|
||
```
|
||
Please enter an integer -33
|
||
|
||
|
||
math domain error
|
||
|
||
```
|
||
|
||
### 定义函数
|
||
|
||
```
|
||
def f(x):
|
||
x *= x
|
||
if not x < 100:
|
||
return x
|
||
else:
|
||
return f(x)
|
||
```
|
||
|
||
```
|
||
f(5)
|
||
```
|
||
|
||
```
|
||
625
|
||
|
||
```
|
||
|
||
```
|
||
f(f(3))
|
||
```
|
||
|
||
```
|
||
43046721
|
||
|
||
```
|
||
|
||
### 类
|
||
|
||
```
|
||
def gcd(m,n):
|
||
"""取余的公约数求法"""
|
||
while m%n != 0:
|
||
m,n = n,m%n
|
||
return n
|
||
|
||
class Fraction:
|
||
def __init__(self,top,bottom):
|
||
self.num = top
|
||
self.den = bottom
|
||
|
||
def __str__(self):
|
||
return str(self.num)+"/"+str(self.den)
|
||
|
||
def show(self):
|
||
print(self.num,"/",self.den)
|
||
|
||
def __add__(self,otherfraction):
|
||
newnum = self.num*otherfraction.den + \
|
||
self.den*otherfraction.num
|
||
newden = self.den * otherfraction.den
|
||
common = gcd(newnum,newden)
|
||
return Fraction(newnum//common,newden//common)
|
||
|
||
def __eq__(self, other):
|
||
"""
|
||
覆盖__eq__方法,通过相同的值创建深相等,而不是相同的引用
|
||
即"==",返回bool值
|
||
"""
|
||
firstnum = self.num * other.den
|
||
secondnum = other.num * self.den
|
||
|
||
return firstnum == secondnum
|
||
|
||
x = Fraction(1,2)
|
||
y = Fraction(2,3)
|
||
print(x+y)
|
||
print(x == y)
|
||
```
|
||
|
||
```
|
||
7/6
|
||
False
|
||
|
||
```
|
||
|
||
### 面向对象编程详见专题笔记
|
||
|
||
### 总结
|