TensorFlow Python基础

简单print用法

print函数-在终端中输出,Python 3.x需要加() , Python 2.x没有()
Python中没有强制的语句终止字符

print("Hello World")

 如果要实现print()不换行,需要指定结尾符end=''

#下列两种等价
#第一种
print("Hello","world")
#第二种
print(“Hello”,end='')
print("world")

变量与数据类型

变量

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息每个变量在使用前都必须赋值,赋值号是“=”

int_a = 3
float_b = 2.5
str_c = "Hello"
#Python会根据变量的值自动定义类型,不需要像C一样定义
print(int_a,type(int_a))
print(float_b,type(float_b))
print(str_c,type(str_c))

标识符

·在Python里,标识符由字母、数字、下划线组成
·在 Python 中,所有标识符可以包括英文、数子以o下划线_,但个能以数字开头

value_date = '2021-2-2'

Python3直接支持中文符号,包括标识符名,但是尽量还是用英文,例如

日期date = '2021-2-2'
print(日期date)

保留字

·保留字不能用作常数或变数,或任何其他标识符名称

·所有Python的关键字只包含小写字母

 

Numbers(数字)数据类型

数字数据类型用于存储数值Python支持不同的数字类型:

int(有符号整型),缺省十进制,还可以表示2进制、8进制和16进制;Python3不再保留长整形,统一为int
float(浮点型),可以用科学计数法表示
complex(复数),复数由实数部分和虚数部分构成,可以用a + bj,或者
complex(a,b)表示,复数的实部a和虚部b都是浮点型
#二进制
var1 = 0b10
#八进制
var2 = 0o10
#十六进制
var3 = 0x10
print(var1,var2,var3)

float -浮点数,例子:-1.8,3.5,1e-5,6.7e15

var1 = 5e2 #5的10次幂

print(var1)

复数与实数

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型

 

var1 = 3+5.3j
var2 =complex(3,5.3)   #使用complex
print(var1,type(var1)) #输出(3+5.3j) <class 'complex'>
print(var2,type(var2)) #输出(3+5.3j) <class 'complex'>

布尔类型

布尔类型, bool值: True and False

open = True
off = False
print(open,type(open)) #输出True <class 'bool'>
print(off,type(off)) #输出False <class 'bool'>

 

注释

注释注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。

#单行注释使用#
'''
多行注释使用单引号
'''"""
或者双引号
"""

 

算术运算

#加法
print(4+6)  #结果为10
#减法
print(6-4)  #结果为2
#取余
print(10%3) #整数部分扔掉,余数为1
#结果的符号与除数相同
print(-10%3) #结果为2
print(10%-3) #结果为-2

 

比较运算

比较运算的结果为True或者False

 

 

 

赋值运算

     

 

 逻辑运算

 

 

#逻辑运算
'''
与运算:有假则假,全真为真
或运算:有真则真,全假为假
非运算:取反
'''
print(1 and 0) #False
print(1 or 0)  #True
print(not 1)   #False

 字符串

字符串可以用双引号",也可以用单引号’

'''
1.字符串可以是单引号,也可以双引号
2.转义字符是"\",如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串
'''
var1 = "我爱中华"
var2 = "I Love China"
#打印
print(var1)
print(var2)

如果要输出原始字符串,在双引号或者单引号前加字母r

#原始字符串
print(r"这是\n你好欢迎")

多个字符串可以使用“+”号进行拼接,例如

print("世界"+"因你"+"而美丽")   #输出 世界因你而美丽

使用*进行重复的字符串的连接

print("你好!\n"*20)  #输出20行你好

 

List列表

List(列表)是Python中使用最频繁的数据类型列表是写在方括号[]之间、元素之间用逗号分隔开

#列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)
List = [1,2,3,4,5,6,'Python36',[1,2,3,4]]
print(List)

列表切片

# 列表元素访问,可以通过索引(下标)和截取(切片),列表被截取后返回-一个包含所需元素的新列表.
# 单个列表元素访问的语法格式为:列表名[下标]
# 列表下标从0开始,-1表示倒数第1个
list1 = ["","","","",""]

print(list1[0]) #第一个元素
print(list1[-1]) #倒数第一个元素
print(list1[0:3]) #前三个字符
print(list1[1::2]) #第一个字符,步长为2

Tuple元组

元组(tuple) 与列表类似,不同之处在于元组的元素不能修改元组写在小括号()里,元素之间用逗号隔开元组中元素的类型可以不相同,和列表类似,也支持嵌套,除了相似,还有不同的是元组不能被修改而列表可以

list1 = [1,2,3,4,5,'hello python',[8,9,7,5],(13,14)]
tuple1 = (1,2,3,4,5,'hello python',[8,9,7,5],(13,14))  #元组

print(tuple1) #输出
#修改列表值
list1[2] = 1000
print(list1)  #修改后的列表
#修改元组
tuple1[2] = 1000
print(tuple1)  #不能被修改,运行错误

 集合

集合(set)是一个无序、且不含重复元素的序列集合主要用来进行成员关系测试和删除重复元素可以使用大括号{}或者set()函数创建集合

set1 = {1,2,3,3,4,4,5,6}  #重复的数字
set2 = {6,7,89}
set3 = set([6,7,8])

print("set1=>",set1) #输出为唯一数字
print("set2=>",set2) 
print("set3=>",set3)

#判断某元素是否在集合里
print(5 in set1)  #返回True

#集合之间的运算
#交集 两个元素共有的元素
print("set1和set2的交集",set1&set2)
#并集 两个集合取全部的元素
print("set1和set2的并集",set1|set2)
#差集 被减数集合元素除去减数集合元素剩下的
print("set2和set3的差集",set2 - set3)
#补集 两个集合中不同时存在的元素集合
print("set1和set2的补集",set1 ^ set2)
print((set1|set2) - (set1&set2))

Dictionary字典

字典是一种映射类型,用"{“"标识,它是一个无序的键(key):值(value)对集合键(key)必须使用不可变类型,在同一个字典中,键(key)是唯一的字典当中的元素是通过键来存取的

#字典
dict1 = {
    'name':'李明',
    'age':22,
    'height':170,
    'weight':120
}
#构建空字典
dict2 = {}
#输出身高
print(dict1['height'])
#修改字典的某一项
dict1['weight'] = 90
print(dict1['weight'])
#字典增加某一项
dict1['sex'] = ''
print(dict1)
#通过元组序列构建字典
dict2 = dict([('name','李三'),('sex','')])
print(dict2)
#还可以赋值方式
dict2 =dict(name='文卓',age='12')
print(dict2)

字典内置函数

#字典
dict1 = {
    'name':'李明',
    'age':22,
    'height':170,
    'weight':120
}
#输出字典所有关键字
print(dict1.keys())
#输出所有字典的值
print(dict1.values())
#清除所有字典数据
print(dict1.clear())

print格式化输出

print的字符串格式化符号

 

单个变量格式化输出

#格式化字符及其ASCII码 %c
print('%c'%'A')  #输出全部都是A
print('%c'%65)

#%s 格式化字符串
print("%s"%"我爱中华")

#%d 格式化整数
print("%d"%10)

#%o 格式化无符号八进制数
print("%o" % 12)
print("%#o" % 12)  #多添加#,可以增加阅读性

#%x 格式化无符号十六进制数
print("%x" % 12)
print("%#x" % 12)  #多添加#,可以增加阅读性

#%f格式化浮点数字,可指定小数点后的精度
print("%f" % 3.14)

#%e或%E 用科学记数法格式化浮点数
print("%e" % 3.140000)

#%g 用科学记数法格式化浮点数(系统误差)
print("%g" % 3140000)  #保留小数点后几位

#m.n m是显示的最小总宽度(如果指定的话) ,n是小数点后的位数(如果指定的话)
print("%5.2f" % 3.1413455)

# -用做左对齐
print("%10.6f"%3.14333)
print("%-10.6f"%3.14333)

#+在正数前面显示加号
print("%+5.2f" % 3.140000)
print("%+5.2f" % -3.140000)

#用*从后面的元组中读取字段宽度或精度
pi = 3.1415926975
print("pi=%.*f"%(5,pi))  #小数点保留5位,*代表元组的第一个参数

多变量格式化输出

如果想通过变量来填充格式控制字符串,那么可以使用运算符(%)和一个元组,在目标字符串中从左至右使用%来指代变量的位置

print("I Like %s and can eat %.2f kg!"%("juice",12.5))

使用字典填充变量输出

print("I Like %(fruit_name)s and can eat %(weight).2f kg!"%{"fruit_name":'orange',"weight":12})

 

数据类型转换

数据类型的转换,只需要将数据类型作为函数名即可使用这些函数返回-一个新的对象,表示转换的值,如: int(), float(),和str()等

#数字字符串转化为数字
a = "6"
b = int(a)
print(b)

#字母转ASCII码
print(ord("a"))
#ASCII码转字母
print(chr(65))
元组转列表,列表转集合
tuple1 = (1,2,3,4,5)
list1 = list(tuple1)
set1 = set(list1)
print(tuple1)
print(list1)
print(set1)
元组转字典
tuple1 = (('name','小明'),('age','12'))
dict1 = dict(tuple1)
print(dict1)
超强的表达式计算(表达式字符串到数值的转换)
x = 8
calc = "5*x+9"
print(eval(calc))  #相当于eval()函数将引号去除

 

 程序控制语句

·三种基本结构:顺序、条件(选择、分支)、循环

条件结构

# .代码块是通过缩进来指示的
# ·缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束
# ·声明以冒号:字符结束,并且开启一个缩进级别
#计算BMI指数
print("请输入体重(kg):")
weight = float(input())
print("请输入身高(m):")
height = float(input)

BMI = weight/height**2

if BMI <20:
    print("BMI是%.2f兄弟,你太轻了,多吃点嘛"%BMI)
elif BMI >25:
    print("BMI是%.2f,太重了,你是藏了多少好吃的"%BMI)
else:
    print("BMI是%.2f,非常正常,请保持!"%BMI)

 

循环语句

循环语句允许执行一条语句或语句块多次Python提供了while循环for循环

while循环

#统计6出现在2的100次方中的次数 while循环
num = 2**100
print(num)
#统计数量
count = 0
#循环遍历
while num >0:
    #去除个位以外的数,剩下为6
    if num%10 == 6:
        count = count +1
    #否则去除各位产生新的num
    num = num // 10
print(count)

 for循环

#统计6出现在2的100次方中的次数
num = 2**100  #数字范围
count = 0  #统计个数
for digit in str(num):
    #数字转换为字符,每个字符构成特殊的数组
    print(digit)
    if digit == "6":
        count = count + 1
print(count)  #输出为5

有时候for循环与range进行配合使用

for i in range(0,10,2): #结果不包含最后的上限,前两个是范围,后一个是步长
    print(i)

与range用法相同的还有xrange,xrange生成的不是列表,而是返回生成器,不过幸运的是xrange在Python2中有效,Python3已经不存在了

列表推导式

# ·列表推导式(List Comprehension)提供了一个创建和操作列表的有力工具
# ·列表推导式由一个表达式以及紧跟着这个表达式的for语句构成,for语句
# 还可以跟0个或多个if或for语句
list1 = [1,2,3]
list2 = [4,5,6]
#x从list1取出,y从list2取出,然后x*y的值组成列表的元素
value = [x*y for x in list1 for y in list2]
print(value)

·数值判断可以链接使用,例如1<x<3能够判断变量x是否在1和3之间

list1 = [1,2,3]
list2 = [4,5,6]
#x从list1中取值并且在大于1小于4
value = [x for x in list1 if 4>x>1]
print(value)

多重循环

循环嵌套

#乘法口诀表
#不变的是外层,变的是内层
#按照行进行输出
for i in range(1,10):  #控制行
    for j in range(1,i+1):  #控制列
        result = i*j
        print('%s x %s = %-5s'%(j,i,result),end='') #不换行,等号后占用5个字符
    print()

 

break语句

# break语句用在while和for循环中
# break语句用来终止循环语句,即循环条件没有False或者序列还没被完全递归完,也会停止执行循环语句

#统计第1个9在2的100次方出现的位置
num = 2**100
pos = 0
#str(num)就是特殊的列表
for digit in str(num):
    pos = pos + 1 #标记位置,伴随关系
    if digit == '9': #如果遍历到9就停止
        break
#打印数字2**100和9的位置pos
print("2**100 is:%d\nthe first position of 9 is Pos.%d"%(num,pos))

 continue语句

continue语句用来跳过当前循环的剩余语句,然后继续进行下一轮循环

#求在2的100次幂中删除所有的9的数字
num = 2**100  #数字
without9 = ''  #空,存储除去9以外的数字

for digit in str(num):
    #如果循环遍历遇到9就跳过
    if digit == '9':
        continue #跳过
    #正常情况下向without9添加
    without9+=digit
print("2**100 is %d \nwithout9 is %s"%(num,without9))

 

pass语句

pass语句是空语句,是为了保持程序结构的完整性,一般用做占位语句

#求在2的100次幂中删除所有的9的数字
num = 2**100  #数字
without9 = ''  #空,存储除去9以外的数字

for digit in str(num):
    #如果循环遍历遇到9就跳过
    if digit == '9':
        pass #不做任何操作
    else:
        #正常情况下向without9添加
        without9+=digit
print("2**100 is %d \nwithout9 is %s"%(num,without9))

 

函数

1.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段·函数能提高应用的模块性,和代码的重复利用率
2.Python提供了许多内建函数,比如print(
3.开发者也可以自己创建函数,这被叫做用户自定义函数

#函数定义形式
def functionName(parameters):
    '''
    函数文档字符串
    '''
    function_suite
    return [expression]

·函数通过“def”关键字进行声明,后接函数标识符名称和圆括号()
·任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

#例子
#求n!的函数
def fact(n):
    #初始值为1
    result = 1
    for i in range(1,n+1):
        result *= i   #相当于result = result * i进行迭代相乘
    return result

#执行函数
value = fact(5) 
print(value)


●可选参数以集合的方式出现在函数声明中并紧跟着必选参数,可选参数可以
●在函数声明中被赋予一个默认值。已命名的参数需要赋值。
●函数的第一 -行语句可以选择性地使用文档字符串一 用于存放函数说明
●函数可以返回一个元组(使用元组拆包可以有效返回多个值)

#函数案例
def fun_example(listp,intp=0,stringp="default"):
    '''
    函数的文档帮助内容
    '''
    listp.append('A new item') #在listp中添加默认字符
    intp += 1  #intp加一
    return listp,intp,stringp  #返回三个参数

#打印函数的文档帮助信息
print(fun_example.__doc__)

#定义两种变量
my_list = [1,2,3]
my_int = 10
# 函数调用传入参数
print(fun_example(my_list,my_int))  #返回结果是元组
#添加后的my_list,已经改变
print(my_list)
#可以用多个变量进行接收
v1,v2,v3 = fun_example(my_list,my_int)

全局变量和局部变量

●全局变量在函数之外声明
●局部变量在函数内容声明
●函数参数也是局部变量, 不需要在函数内部重复定义! ! !
●全局变量可以不需要任何特殊的声明即能读取,但如果想要修改全局变量的
值,就必须在函数开始之处用global关键字进行声明,否则Python会将此
变量按照新的局部变量处理(请注意,这点很容易被坑)

 

全局变量全局访问

#全局变量,可以被全局访问
number = 10
def func():
    print(number)

func()   #输出10
print(number)  #输出10

局部变量只能局部访问

#局部变量,只能局局访问
number = 10
def func():
    number = 3   #在函数内部访问,全局在内部被修改
    print(number)

func()   #输出3
print(number)  #输出10

局部变量提升,修改全局变量

#变量提升
number = 10
def func():
    global number #使用global关键字,局部变量变全局
    number = 3
    print(number)

func()   #输出3
print(number)  #输出3

 

类Class

●类(Class)用来描述具有相同的属性和方法的对象的集合
●它定义了该集合中每个对象所共有的属性和方法
●对象是类的实例
使用class语句来创建一个新类, class 之后为类的名称并以冒号结尾:

#类定义的形式
class className:
    '''
    类描述的帮助信息
    '''
    class_suite #主体

 案例

class DeepLearner(object):
    '''
    深度学习类,类包括属性和方法,属性就是变量,方法就是函数
    '''
    #count变量是类的属性,它的值将在类的所有实例中进行共享
    #相当于类的全局变量
    count = 0

    #__init__()方法是一种特殊的方法,被称为类的构造函数或初始方法
    def __init__(self,name,school):
        #相当于类的局部变量
        self.name = name 
        self.school = school
        #实例化变量count加1
        DeepLearner.count = DeepLearner.count + 1

    def getName(self):
        return self.name

    def getSchool(self):
        return self.school

    def getCount(self):
        print("实例化的个为:%d"%(DeepLearner.count))

    def displayLearner(self):
        print("Name:%s,School:%s"%(self.name,self.school))
#打印类的文档帮助信息
print(DeepLearner.__doc__)

#类的实例化
v1 = DeepLearner('Bob','Liaoning University of Technology')
v2 = DeepLearner('Ania','Dalian Nationalities University')
#使用.打印类的变量
print(DeepLearner.count)

#类的方法调用,首先实例化后调用实例化的方法
print(v1.getCount())
print(v2.displayLearner())

 

文件

Python针对文件的处理有很多内建的函数库可以调用

#写文件
with open('demo.txt','wt') as out_file:
    out_file.write('文档正在写入\n我是写入的内容')

#读文件
#打开文件demo.txt,读取方式rt作为文件变量in_file
with open('demo.txt','rt') as in_file:
    text = in_file.read()  #read()方法读取
print(text)

 

异常处理

Python中的异常由try-except [exceptionname]块处理

 

#异常处理
def func():
    try:  #代码执行的地方
        10/0  #故意除0
    except ZeroDivisionError:  #除零异常ZeroDivisionError类
        print('发生除0异常')
    else:
        print("未发生异常情况执行!")
    finally:
        print("finally必须执行,无论是否发生异常")

#执行函数
func()

导入外部库

外部库可以使用import [libname]关键字来导入
可以用from [libname] import [funcname]来导入所需要的函数

#导入模块
# import [模块名]
import random
# import [模块名] as [重命名]
import random as rand
#from [模块名] import [模块方法]
from random import shuffle
#from [模块名] import * 导入全部方法
from random import *

 

posted @ 2022-10-12 22:41  Crown-V  阅读(76)  评论(0)    收藏  举报