资讯专栏INFORMATION COLUMN

Python数据类型和分支循环

archieyang / 901人阅读

摘要:会认为子类是一种父类类型。一般记为它是编程语言中表示文本的数据类型。运算是与运算,只有所有都为,运算结果才是布尔值经常用在条件判断中列表列表是中使用最频繁的数据类型。是中内置的一种数据类型,可以随时添加和删除其中的元素。

了解过了Python的发展历史,现在开始我们的Python基础吧,如果你有学习过其他的编程语言,你可以跳过这一篇
PyCharm使用图解

开发python的工具你可以自己选择, 这里我推荐的是PyCharm界面操作和webstorm一样,要是你弄过前端,肯定很熟悉

软件的下载安装步骤,可以看下这个文章:
http://blog.csdn.net/qq_29883...

安好之后呢,来创建一个项目,写一句满满仪式感的hello world
File->New Project ..

这个地方选择你的python安装路径,点击create即可完成创建,项目创建好了,开始创建我们的文件

最后运行一下

变量

什么是变量?给你一个官方一点的回答:
变量指向各种类型值的名字,以后再用到这个值时,直接引用名字即可

Python中定义一个变量的语法:

name="小明" #变量名=变量对应的值
name=input("请输入姓名")

这样我们就成功的定义一个变量,和其他编程语言不一样的是变量没有数据类型的修饰,这就是前面我们说过的动态类型,变量的类型由值来决定
问:噗,还有一个问题上面那个#号什么鬼
答:在python中#为单行注释,多行注释 """ 注释内容 """
问:那input又是什么
答:python3.X里input是接收用户输入,这个时候会让你输入姓名并赋值给变量name,在python2.X里面时raw_input

变量的命名规则:

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

不能使用python中的关键字

Python3中共有33个关键字,都不能作为变量名来使用:
False/None/True/and/as/assert/break/class/continue/def/del/elif/else/except/finally/for/from/global/if/import/in/nonlocal/lambda/is/not/or/pass/raise/return/try/while/with/yield

数据类型

Python中数据类型:

Number(数字) Python3支持3种不同的数值类型:整型(int)、浮点型(float)、复数(complex)

布尔值(真或假)

String(字符串)

List(列表)

Tuple(元组)

Sets(集合)

Dictionary(字典)

小故事:为什么叫布尔值? 为了纪念一个人他的名字叫布尔,他出版的《逻辑的数学分析》、《思维规律的研究》以他名字命名布尔代数,因为他在符号逻辑运算中做的的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,运算的结果称为布尔值

通过type()来查看数据类型

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:UsersAdministrator>python
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)]
 on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> type("张三")

>>>

此外还可以用 isinstance 来判断:

a = 111
isinstance(a, int)
True

isinstance 和 type 的区别在于:

class A:
    pass

class B(A):
    pass

print(isinstance(A(),A)) # True
print(isinstance(B(),A)) # True
print(type(A())==A)      # True
print(type(B())==A)      # False
#type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

当然数据类型也可以进行转换

>>> type("张三")

>>> type(int("18"))

>>>
数据类型转换
#一、数据类型转换
# number="1"
# number=1
# number="True"
# number="aa,bb,cc"
# number=65
number="A"
print(type(number))
print(number)
# number1=int(number) #转换为int
# number1=float(number) #转换为float
# number1=str(number) #转换为str
# number1=bool(number) #转换为str
# number1=list(number) #转换为一个列表
# number1=chr(number) #将一个整数转换为一个字符
# number1=ord(number) #将一个字符转换为它的整数值
print(type(number1))
print(number1)
字符串

字符串(String)是由数字、字母、下划线组成的一串字符。一般用一对单引号或双引号或三引号来包裹。一般记为 : s = "a1a2···an" 它是编程语言中表示文本的数据类型。
转义字符:在需要在字符中使用特殊字符时,python用反斜杠()转义字符。

python的字符串列表有2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1

从右到左索引默认-1开始的,最大范围是字符串开头

如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。 比如:

s = "ilovepython"
# s[1:5]的结果是love。

使用上述方式获取的新字符串为“love”。而s[1]的值为 l,s[5]的值为p。
不难发现:上面的结果包含了左边界的值(s[1]`的值l),而不包括右边界的值(s[5]的值p)。
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:

str = "Hello World!"
str=R"helloPython"
print("ha" not in str)
print(str)          # 输出完整字符串
print(str[0])        # 输出字符串中的第一个字符
print(str[2:5])      # 输出字符串中第三个至第五个之间的字符串
print(str[2:])       # 输出从第三个字符开始的字符串
print(str * 2 )      # 输出字符串两次
print(str + "TEST")  # 输出连接的字符串 
#完整版
str=" Hello python ll5 "
print(str.capitalize()) #将字符串的第一个字符转换为大写
#Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
print(str.count("l",0,10)) 
"""
sub – 搜索的子字符串 
start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。 
end –字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
"""
print(str.count("l"))
print(str.endswith("l")) #是否以l结尾返回true 和 false
print(str.endswith("o",0,5)) #在指定的范围内以什么结尾
print(str.find("wl")) 
print(str.index("l")) #跟find()方法一样,只不过如果str不在字符串中会报一个异常.
print(str.isalnum()) #如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False(包含其他符号都是false)
print(str.isalpha()) #如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
print(str.isdigit()) #如果字符串只包含数字则返回 True 否则返回 False..
print(len(str)) #返回字符串长度
print(str.lower()) #转换字符串中所有大写字符为小写.
print(str.upper()) #转换字符串中的小写字母为大写
print(str.swapcase()) #将字符串中大写转换为小写,小写转换为大写
print(str.lstrip()) #截掉字符串左边的空格或指定字符。
print(str.rstrip()) #删除字符串字符串末尾的空格.
print(str.strip(str)) #在字符串上执行 lstrip()和 rstrip()
布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:

>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False

布尔值可以用and、or和not运算。and运算是与运算,只有所有都为True,and运算结果才是True:布尔值经常用在条件判断中

列表

List(列表) 是 Python 中使用最频繁的数据类型。列表用 [ ] 标识,是 python 最通用的复合数据类型,应该不会有疑问列表是什么吧,举个例子,喜洋洋是一只羊,那么羊村里面的羊是不是就应该用列表来表示了。list是python中内置的一种数据类型,可以随时添加和删除其中的元素。

list1 = ["Google", "Baidu", 1997, 2000];

print(list1[-2]) #从右侧开始读取,-1开始
print(list1[1:])#输出从第二个元素开始后的所有元素
print(len(list1)) #返回列表长度
print([1, 2, 3] + [4, 5, 6]) #组合
print(list1*4) #重复
print(1997 in list1) #元素是否存在于列表中
#迭代
for x in list1: 
    print(x)
#列表嵌套
list2=[1,2,3]    
list1=["baidu",list2]
print(list1[1][5]) #输出2
print(max([1,2,3])) #输出3
print(min([1,2,3])) #输出1
yangcun=["喜洋洋","美羊羊","懒洋洋"]#定义一个列表
print(yangcun)
#列表基础操作
list = [ "runoob", 786 , 2.23, "john", 70.2 ]
tinylist = [123, "john"]
# list.clear()
# list.reverse()
print(list)               # 输出完整列表
print(list[0])            # 输出列表的第一个元素
print(list[1:3])          # 输出第二个至第三个的元素 
print(list[2:] )          # 输出从第三个开始至列表末尾的所有元素
print(tinylist * 2)       # 输出列表两次
print(list + tinylist)    # 打印组合的列表

问:如何获取到列表的某一个元素呢?
答:通过索引的方式,注意索引从0开始yangcun[0]即为喜洋洋
问:索引可以为负数么
答:如果yangcun[-1]即取到最后一个元素,依次类推
问:羊村如果来了新羊怎么办
答:yangcun.append("沸羊羊")
问:新来的小羊可以选择自己喜欢的位置么
答:yangcun.insert(1,"沸羊羊")这样沸羊羊就跑到美羊羊前面了
问:美羊羊的名字打错了,怎么办
答:别担心,yangcun[1]="美洋洋" 就可以了
问:灰太狼来了,我想找到喜洋洋在哪,怎么找到喜洋洋的索引呢
答:yangcun.index("喜洋洋")
问:那万一有小羊被灰太狼抓走了羊村的羊少了怎么表示
答:yangcun.pop() 即删除list末尾的元素,yangcun.pop(1) 删除指定索引位置的元素
问:yangcun[1:3] 这是什么语法
答:这是python中的分片,意思是取索引为1和2的元素 (其实很好记,就是顾头不顾尾,所以索引不包含3本身)

呼呼~ 一连串的问题下来大家应该get到了基本的列表操作,当然这还不够全,你可以输入完列表名称.后看下给出的提示上面的方法都可以试一试。

yangcun=["喜洋洋","美羊羊","懒洋洋",["小羊1","小羊2"]]
xinyangcun=yangcun.copy();
yangcun2=yangcun[:];
yangcun[3][0]="小小羊"
print(xinyangcun[3][0]) #问:输出结果时什么
print(yangcun2) #问:输出什么

理解列表:

输出的是小小羊,这个和列表的内存存储方式有关,xinyangcun只是指向了和yangcun一样的内存地址,但是当这块空间的内容变了,最后输出的内容肯定就变了,反过来即你改变xinyangcun的值yangcun也会跟着变。

输出["喜洋洋","美羊羊","懒洋洋",["小羊1","小羊2"]]

元组

元素和列表概念上其实是一样的,最大的区别是元组一旦创建不能修改,所以可以成为只读列表,定义上用()

yangcun=("喜洋洋","美羊羊","懒洋洋")
print(yangcun[0]) #喜洋洋
#元组基础操作
tuple = ( "runoob", 786 , 2.23, "john", 70.2 )
tinytuple = (123, "john")

print(tuple)               # 输出完整元组
print(tuple[0])            # 输出元组的第一个元素
print(tuple[1:3])          # 输出第二个至第三个的元素 
print(tuple[2:])           # 输出从第三个开始至列表末尾的所有元素
print(tinytuple * 2)       # 输出元组两次
print(tuple + tinytuple)   # 打印组合的元组

那么元组和列表区别:

Tuples are immutable, lists are mutable.(元组是不可变的, 而列表是可变的)

元组通常由不同的数据,而列表是相同类型的数据队列。元组表示的是结构,而列表表示的是顺序。

你不能将列表当作字典的key, 而元组可以。

由于元组支持的操作比列表小, 所以元组会比列表稍快

a=(1,2)
b=[4,5]

c={a:"tuples"}
c={b:"list"}
字符串的一些常用方法
title=" hello world "

print(title.capitalize()) #Hello world 首字母大写
print(title.casefold()) #全部转换为小写
print(title.upper()) #全部转换为大写
print(title.swapcase()) #大小写互转
print(title.center(30,"-")) #---------hello world----------
print(title.find("h")) #查找返回索引 0,找不到返回-1
print(title.index("h"))#返回所在索引
print(title.endswith("com"))#判断是否以com结尾 False
print(title.strip()) #删除字符串两边的指定字符,括号的写入指定字符,默认为空格
print(len(title)) #字符串长度
print(title.count("l"))#字符串统计,出现的次数
print(title.replace("l", "a"))  #替换字符串
print(title.split(" ")) #字符串分隔
print("aa".isalpha())  # 是否是英文字母,返回布尔值
print("111".isdigit())  # 是否是数字,返回布尔值
print("_name".isidentifier())  # 是否是一个合法的变量名,返回布尔值
print("aaaAAAA".islower())  # 是否是小写字母,返回布尔值
print("AAAAA".isupper())  # 是否是大写字母,返回布尔值
字典

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容,字典中没有下标是无序的

列表和字典两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过索引存取。
字典的创建格式如下:注意键必须唯一

d={key1:value1,key2:value2}
#字典基础操作
dict = {}
dict["one"] = "This is one"
dict[2] = "This is two"

tinydict = {"name": "john","code":6734, "dept": "sales"}


print(dict["one"])          # 输出键为"one" 的值
print(dict[2])              # 输出键为 2 的值
print(tinydict)             # 输出完整的字典
print(tinydict.keys())      # 输出所有键
print(tinydict.values())    # 输出所有值

moviesdict={
    "芳华":"黄轩",
    "心理罪":"邓超"
}
print(moviesdict.items())
print(moviesdict.keys())
print(moviesdict.values())
print("芳华" in moviesdict) #指定的key在列表中是否存在
# print(moviesdict.pop("芳华"))#根据指定的key删除
# print(moviesdict.keys())
print(moviesdict.popitem()) #删除,末尾元素
# moviesdict.clear()
print(moviesdict.keys()) 
print(moviesdict.get("芳华")) #根据key找value

字典常用方法:

yang={
    "y1":"美羊羊",
    "y2":"懒洋洋",
    "y3":"喜洋洋",
    "y4":"沸羊羊"
}
#添加
yang["y5"]="慢羊羊"
#通过key来取值
print(yang["y1"])
#修改
yang["y1"]="美羊羊1"
print(yang)
#删除
del yang["y1"]
print(yang)
#查找
print(yang.get("y2"))
print(yang.keys());#获取所有的key
print(yang.items())
集合set

集合就像舍弃了值,仅剩下键的字典一样,键与键之间也不允许重复,如果你仅仅想知道某一个元素是否存在而不关心其他的,使用集合是一个非常不错的选择,如果需要为键附加其他信息的话,建议使用字典
set是无序的集合,不能有重复的元素,也不能排序,sort()是不能使用的。同列表相比set验证元素是否存在会更快。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建一个set:myset = {3, 4, 5, 1}
type(myset) 输出 set

运算符

Python运算符分类:

算数运算符(+ - / /% * //)

关系运算符(== != > < >= <=)

赋值运算符(= += -= = /= %= *= //=)

逻辑运算符(and or not )

位运算符(& | ^ ~ << >>)

成员运算符(in not in)

身份运算符(is is not)

以上的运算符其实看字面意思都可以,这里挑几个和其他语言中不一样的运算符做下解释:
** :幂,返回x 的 y次幂
// :返回商的整数部分
in :如果在指定的序列中找到值,就返回True,否则false
is :is 判断两个标识符是否引用自一个对象

分支语句

分支又称为流程控制,什么意思呢,也就是计算机其实比较傻的,如果你不告诉它该怎么执行,它会从第一行按序一行一行执行,但是我们的程序都是有逻辑,就是指挥计算机应该怎么执行我们写的代码。

要是上面我写的这一长串,你懒得看的话,可以看看下图(喜洋洋与灰太狼)帮助你更好的理解分支语句
][8]

huitailang="灰太狼"

#基础用法
# hongtailang=input("请输入红太狼想不想吃羊:")
# if hongtailang=="吃羊":
#     # 坑
#       print("红太狼逼灰太狼去抓羊")
#       print("啦啦啦啦啦") 
# else:
#     print("灰太狼自己去抓羊")    
#     print("lalla")

#多条件:else if 存在多个,但是不能独立出现,必须和if ,可以没有else
# yang=input("灰太狼抓到了哪只羊:")
# if yang=="喜洋洋":
#     print("成功逃离")
# elif yang=="美羊羊":
#     print("等待喜洋洋来就她")
# elif yang=="懒洋洋":
#     print("哭")
# else:
#     print("吃了")      

#分支嵌套:不建议嵌套太多层 3
hongtailang=input("请输入红太狼想不想吃羊:")
if hongtailang=="吃羊":
    yang=input("灰太狼抓到了哪只羊:")
    if yang=="喜洋洋":
        print("成功逃离")
    elif yang=="美羊羊":
        print("等待喜洋洋来就她")
    elif yang=="懒洋洋":
        print("哭")
    else:
        print("吃了") 
else:
    print("灰太狼自己去抓羊")    

要是用代码来试下应该怎么做

huitailang="灰太狼"
hongtailang=input("红太狼是否想吃羊:")
if hongtailang=="吃羊":
    print("红太狼逼灰太狼去抓羊")
else:
    print("{name}自己去抓羊".format(name=huitailang))

语法上面和其他语言并没有变化太多,缩进这种语法当你看习惯了就会发现很不错
问:print前面的缩进或者那个冒号删了可以么
答:都不可以删,会报语法错误
问:python中是否和其他语言中一样存在else if ?
答:当然,但是不叫else if ,算是一个小简写 elif ,注意elif不能多带带使用,必须和if 结合使用

上面的if弄明白了么,我们来加点料做个if的嵌套,情景:当灰太狼遇见喜洋洋

huitailang="灰太狼"
xiyangyang="喜洋洋"
hongtailang=input("红太狼是否想吃羊:")
if hongtailang=="吃羊":
    print("红太狼逼灰太狼去抓羊")
else:
    print("{name}自己去抓羊".format(name=huitailang))
    yang=input("抓到哪只羊:")
    if yang==xiyangyang:
        print("成功逃离")
    else:
        print("抓到羊")
循环语句

循环很好理解,循环也就是重复,重复某一个语句

第一种:while循环,来大家和我一起写下面的代码执行下

while True:
    print("当条件成立的时候执行")

大家看到什么结果?为了让大家对这个循环条件的作用理解深刻一些,发现一不小心写了一个死循环,这也是我们写循环的禁忌,怎么能避免死循环,也很简单,在循环体内一定要有改变循环条件的代码即可。

刚刚上图的喜洋洋与灰太狼里,灰太狼什么时候才能抓到羊还记得么,是不是怒气值到3的时候,那么我们来用代码模拟下

nuqizhi=0;  #怒气值
while nuqizhi<3:
    nuqizhi = nuqizhi + 1
    print("怒气值为"+str(nuqizhi))
if nuqizhi==3:
    print("怒气值够了抓到羊")

第二种:for循环 我们用for 来数一数羊村里面的羊吧

yangcun=["喜洋洋","懒洋洋","美羊羊","沸羊羊"]
for yang in yangcun:
    print(yang)

输出结果:
喜洋洋
懒洋洋
美羊羊
沸羊羊

怎么跳转循环(break、continue)

yangcun=["喜洋洋","懒洋洋","美羊羊","沸羊羊"]
for yang in yangcun:
    if yang=="美羊羊":
        break;
    print(yang)

输出结果:
喜洋洋
懒洋洋

yangcun=["喜洋洋","懒洋洋","美羊羊","沸羊羊"]
for yang in yangcun:
    if yang=="美羊羊":
        continue;
    print(yang)

输出结果:
喜洋洋
懒洋洋
沸羊羊

Python的执行过程

在上一章我们给大家介绍了什么是编译型语言、什么是解释型语言,
当然还有混合型比如JAVA,JAVA执行过程是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件,所以JAVA是先编译后解释的语言。

而python是一门解释型语言,那么有没有注意到.pyc文件(在安装路径下的__pycache__文件夹下),其实Python当你去执行的时候,它也做了编译同JAVA一样,在执行之前编译并把编译的结果保存在内存中,结束后写入到.pyc文件里。第二次再运行就会先读.pyc文件,要是没有这个文件,就去执行编译写入的步骤。

最后小小总结一下

通过上面你应该get到的Python基础语法,数据类型,分支,循环

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41032.html

相关文章

  • 2018年9月Python计算机二级复习攻略

    摘要:题型及分值单项选择题分含公共基础知识部分分。二维数据的处理表示存储和处理。七计算生态标准库库必选库必选库可选。更广泛的计算生态,只要求了解第三方库的名称,不限于以下领域网络爬虫数据分析文本处理数据可视化用户图形界面机器学习开发游戏开发等。 考试方式:   上机考试,考试时长 120 分钟,满分 100 分。   1. 题型及分值   单项选择题 40 分( 含公共基础知识部分 10 分...

    ConardLi 评论0 收藏0
  • Python基础之控制结构

    摘要:基础之控制结构学习目标代码块与缩进条件语句语句语句的嵌套断言循环循环循环中断循环控制语句综合嵌套列表解析式基础相关链接学习目标是简洁易学面向对象的编程语言。 Py...

    liaosilzu2007 评论0 收藏0
  • Python入门-控制流

    摘要:返回索引页控制流分支结构循环结构和总结练习参考控制流上一张我们了解了的基本语法和数据结构。和后必须加判断表达式,一般表达式返回值为布尔型,当非布尔型时,表示该值是否存在。语句以英文冒号结尾逻辑代码块以个空格或分隔。 < 返回索引页 控制流 分支结构 if/elif/else 循环结构 for while break 和 continue pass 总结 练习 参考...

    silvertheo 评论0 收藏0
  • Python3学习】走进Python

    摘要:如为,小数点后两位是,存在四舍五入。在中,有一个小坑,就是并不是真正的四舍五入如图而可以这样的总结为在奇数的时候,是四舍五入,在偶数的时候是五舍六入函数执行后输出的提示返回的是数据类型是,所以有时需要进行类型转换,这样的函数。 Python语言的概述 Pyhthon 是 蟒蛇的意思。python语言的拥有者是 Python Software Foundation(PSF)RSF是一个非...

    fuchenxuan 评论0 收藏0
  • [零基础学python]从if开始语句的征程

    摘要:一般所有高级语言,都包含如下语句,也不例外循环语句容许一些语句反复运行数次。条件语句容许仅当某些条件成立时才运行某个区块。无条件分支语句容许运行顺序转移到程序的其他部分之中。零基础学我在上的文章,随时更新修改。 一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句。这种讲法,其实不符合学习的特点。学习,就是要循序渐进的。在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是...

    caspar 评论0 收藏0

发表评论

0条评论

archieyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<