Python学习笔记——Day02

Python学习笔记——Day02

今天就是学习Python的第二天了,内容会比昨天多一些,总之就是干就完了。

变量和类型

在设计程序的过程中,我们会使用变量作为存储数据的载体。变量的值可以被读取或修改,存储在一块内存空间总,这是所有计算和控制的基础。计算机能够处理的数据有很多种类型,比如数值、文本、图像、音频、视频等多种数据,所以不同类型的数据就需要通过定义不同的存储类型去区分。

Python中的数据类型:

  • 数字:
    • 整型:int类型,表示为长整型,python2还有Long类型,但这一类型在python3中被合并为int类型,举例:1,123,714
    • 浮点型:float类型,是各种小数,因为科学计数法小数点的位置是可以变动的,故称小数为浮点数。举例:2.1,123.456,2.12e4
    • 复数型:complex类型,复数类型,就是我们常用的复数,不过虚部由i换成了j,举例:3+4j
    • 布尔型:bool类型,取值只有True或False,注意首字母大写
  • 字符串型:String类型,是通过单引号或双引号括起来的任意字符,可以使用反斜杠\转义特殊字符,举例"abc",'haha'
  • 列表:List,是python中使用最频繁的数据类型。列表中的元素类型可以不相同,比如数字,字符串,列表都可以作为他的元素,元素可以重复,使用[],将数据元素写在方括号里,并使用逗号隔开元素,列表包含索引也可以被截取,举例:[1, "haha", [1, 2, 3]]
  • 元组:tuple,和列表类似,数据元素也可以不相同,元素可以重复,不同之处是元组的元素不可以修改,写在()里,元素用逗号隔开。举例:(1, 1.23, "abc")
  • 集合:set,和列表类似,但数据元素不可重复,基本功能是进行成员关系测试和删除重复元素。可以使用大括号{}set()函数创建集合,注意:创建一个空集合必须用set()而不是{},这是因为{}被用来创建空字典。举例:{1, 2, 3}
  • 字典:dictionary,键值对形式存储,键无序,并且键唯一,且必须用不可变类型进行存储。举例:{'a': 1, 'b': 2', 'c': 3}

变量命名

每个变量都要有它的名字,所以给变量起名就要做到见名知意,而且要有一定规范。

  • 变量名由字母、数字和下划线构成,数字不能开头
  • 大小写区分,大写的A和小写的a是两个不同的变量
  • 不使用系统保留字及关键字作为变量名
  • 使用小写字母,多个单词可以用下划线进行连接

变量使用

接下来通过几个简单的小例子说明变量的定义及使用

例子1:变量赋值、打印及打印他们的类型

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽


def main():
    a = 1   # 整型
    b = 2.123   # 浮点型
    c = "我是c"   # 字符串型
    d = False   # 布尔型
    e = 1 + 3j  # 复数型
    num_list = [a, b, e, [2, 4, 123]]   # 列表
    variable_tuple = (a, b, c, d, e, num_list) # 元组
    variable_set = {a, b, a, 1, c, d}    # 集合
    score_dict = {'小明': 12, '张三': 34, '小红': 23} # 字典
    print(a)
    print("a的类型是:", type(a))
    print(b)
    print("b的类型是:", type(b))
    print(c)
    print("c的类型是:", type(c))
    print(d)
    print("d的类型是:", type(d))
    print(e)
    print("e的类型是:", type(e))
    print(num_list)
    print("num_list的类型是:", type(num_list))
    print(variable_tuple)
    print("variable_tuple的类型是:", type(variable_tuple))
    print(variable_set)
    print("variable_set的类型是:", type(variable_set))
    print(score_dict)
    print("score_dict的类型是:", type(score_dict))


if __name__ == '__main__':
    main()

上面这个例子中使用type()这个函数,作用是查看传入的参数的类型。

例子2:数字的运算

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽


def main():
    a = 13
    b = 21
    c = 0
    print(a + b)
    print(a - b)
    print(a / b)
    print(a * b)
    print(b // a)
    c += a
    print("c += a", c)
    c -= b
    print("c -= a", c)
    c *= a
    print("c *= a", c)
    c /= b
    print("c /= a", c)
    c //= a
    print("c //= a", c)
    print(c > a)
    print(c <= b)


if __name__ == "__main__":
    main()

事实上还有其他的运算符,以后我们会一一使用到,到时候再讲也来得及,这里只写几个简单的例子

运算符

运算符 描述
[] [:] 下标,切片
** 指数
~ + - 按位取反, 正负号
* / % // 乘,除,模,整除
+ - 加,减
>> << 右移,左移
& 按位与
^ \| 按位异或,按位或
<= < > >= 小于等于,小于,大于,大于等于
== != 等于,不等于
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
= += -= *= /= %= //= **= &= \|= ^= >>= <<= (复合)赋值运算符

练习

练习一

体重指数的计算

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 体重指数的计算


def main():
    height = int(input("请输入你的身高(cm):").strip())
    weight = int(input("请输入你的体重(kg):").strip())
    # 计算标准体重
    standard_weight =  height- 105
    print("你的体重指数为:%.2f%%" % ((weight - standard_weight) / standard_weight * 100))


if __name__ == "__main__":
    main()

这里使用了input()函数,strip()函数,int()函数,一一来做说明,input()函数是读取从控制台输入的内容,并返回字符串类型的值,strip()函数去除字符串两边的空格,int()函数是将字符串类型的值转化为int类型,但必须要求字符串值必须是数字,如果有字母汉字的存在会发生异常,程序终止,这个方法写的并不完善,更好的实现方式我们后面再说。

练习二

汇率转换

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 人民币兑换美元


def main():
    count = int(input("请输入您要兑换的金额:").strip())
    print("这里是您兑换的%.3f美元" % (count / 6.851))


if __name__ == "__main__":
    main()

这个好简单啊,我都有点不好意思放上来,不过刚开始学python第二天嘛,弄得太复杂也不好,同样的这个方法写的并不完善,更好的实现方式我们后面再说。

if-elif-else语句

在Python中,要构造分支结构,可以使用ifelifelse关键字,使用:来写if的代码体,下面来看使用的例子

a, b = 10, 20
    if a > b:
        print("a大于b")
    else:
        print("b大于a")

这是if-else组合使用

a, b = 10, 20
    if a > b:
        print("a大于b")

这就是单独使用if的情况

    if a > b:
        print("a大于b")
    elif a < b:
        print("b大于a")

这是if-elif组合使用的情况

    a, b = 10, 20
    if a > b:
        print("a大于b")
    elif a == b:
        print("b等于a")
    else:
        print("a小于b")

这是if-elif-else组合使用的情况

if练习

练习三

登录验证

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:登录验证


def main():
    username = input("请输入用户名:").strip()
    password = input("请输入密码:").strip()
    if username == 'admin' and password == '123456':
        print("登录成功")
    else:
        print("用户名或密码错误")


if __name__ == "__main__":
    main()

当在控制台输入admin123456时,会打印登录成功,而当输入的不是这两项时,打印的就是用户名或密码错误。所以各位一定要记好自己的用户名及密码,避免输入错误的情况。在学完循环后我们再对这段代码进行一次改善。

练习四

成绩转换,百分制->等级制
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:成绩转换,百分制->等级制
"""
90分以上 --> A
80分~89分 --> B
70分~79分	--> C
60分~69分 --> D
60分以下 --> E
"""


def main():
    score = int(input("请输入你的成绩:").strip())
    if 90 <= score <= 100:
        grade = "A"
    elif 80 <= score < 90:
        grade = "B"
    elif 70 <= score < 80:
        grade = "C"
    elif 60 <= score < 70:
        grade = "D"
    elif 0 <= score < 60:
        grade = "E"
    else:
        print("请输入合理的成绩")
    print("你的成绩等级是%s" % grade)


if __name__ == "__main__":
    main()

循环

有些时候我们会需要循环去做很多事情,比如重复执行输出语句10次,或者设定程序每间隔1分钟进行一次打印操作,我们不可能自己计时1分钟执行一次print函数,所以就用到了循环操作。在Python中构造循环结构有两种做法,一种是for-in循环,另一种是while循环。

for-in循环

就是相当于我们有一个容器items,一次拿一个容器里面的单个item,我们就可以这样实现:

items = [1, 2, 3, 4, 5, 6]
for item in items:
    print(item)

上面这个例子是列表的遍历,也可以使用这样的方式:

items = [1, 2, 3, 4, 5, 6]
for i in range(len(items)):
    print(items[i])

这个是通过range函数产生一个固定不变数字序列,然后通过索引进行对列表元素的输出items[i]这是列表根据索引获取元素的方式。我们可以通过range函数做很多事情,比如求1~100所有数字的和

total = 0
for i in range(1, 101):
    total += i
print(total)

参数说明,range函数一共可以填写三个参数,第一个是起始位置,第二个是终止位置,第三个是步长,比如range(1, 101, 2),这就是获取1到100之间的奇数,起始位置到终止位置其实是一个左闭右开的区间,[1,101),包括1而不包括101。

while循环

若我们不知道具体要循环几次,这时候推荐使用while循环,它的循环控制条件是一个bool表达式或bool值,True循环继续,False循环终止。下面看几个小例子。

猜数字小游戏,若猜对退出循环,打印恭喜你答对了,猜错继续猜测

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:while循环

import random


def main():
    target_num = random.randint(0, 100)
    while True:
        num = input("请输入数字:").strip()
        if num.isdigit():
            num = int(num)
        if num > target_num:
            print("猜大了")
        elif num < target_num:
            print("猜小了")
        elif num == target_num:
            print("恭喜你答对了")
            break
        else:
            print("猜错了,请重来")


if __name__ == "__main__":
    main()

这里面while True是一个死循环,循环没有终止条件,当答对的时候通过break跳出循环,否则一直在循环中进行循环。

练习

练习一优化

在练习一中提到,那段程序可能会报错,如果输入的是字母或字符,程序会终止,自从我们学过if判断就可以避免这种情况的发生了。再加上while循环,直到计算成功一次,代码如下

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 体重指数的计算优化


def main():
    while True:
        height = input("请输入你的身高(cm):").strip()
        weight = input("请输入你的体重(kg):").strip()
        if height.isdigit() and weight.isdigit():
            height = int(height)
            weight = int(weight)
            # 计算标准体重
            standard_weight =  height- 105
            print("你的体重指数为:%.2f%%" % ((weight - standard_weight) / standard_weight * 100))
            break
        else:
            print("请输入正确的格式!!!")


if __name__ == "__main__":
    main()

在这里我们添加一个死循环,在输入错误的时候提示用户重新输入,只有结果被算出才会结束程序。其中用到了一个isdigit方法,这是判断字符串类型变量是否由纯数字构成的一个方法,是返回True,否返回False,当两个输入都判为纯数字的时候我们开始计算,并打印结果,跳出循环。

练习二优化

练习二的优化和练习一一样,学习要会举一反三,我就不写啦,但代码会传到我的github上,有需要的可以clone下来。

练习三优化

其实也就是加一次循环,哈哈哈,但这个贴一下吧,不贴出来我都怀疑自己偷懒。

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:登录验证优化


def main():
    while 1 == 1:
        username = input("请输入用户名:").strip()
        password = input("请输入密码:").strip()
        if username == 'admin' and password == '123456':
            print("登录成功")
            break
        else:
            print("用户名或密码错误")


if __name__ == "__main__":
    main()

这次的循环条件我使用的是1 == 1恒等式,效果和True是一样的。直到登录成功,否则一直提示输入用户名和密码。

练习五

打印99乘法表

#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:99乘法表


def main():
    i, j = 1, 1

    while i < 10:
        while j < i + 1:
            print("%d*%d=%d" % (i, j, i * j), end="\t")
            j += 1
        i += 1
        j = 1
        print()

    # for i in range(1, 10):
    #     for j in range(1, i + 1):
    #         print("%d*%d=%d" % (i, j, i * j), end="\t")
    #     print()


if __name__ == "__main__":
    main()

while版本和for版本的,两种实现,print函数默认换行,使用end='\t'可以将让print函数末尾换成一个横向制表符。\t是一个转义字符代表横向制表符。其他转移字符会在学到字符串的时候列出,所以别着急,该来的会来的。

结语

今天内容不少,这些一定要牢固的掌握,是基础中的基础,好好学习天天向上!

如果你发现我的文章哪里有错误或者有什么好的想法可以联系我,我们一起学习共同进步,我的邮箱地址是[email protected]

let’s do more of those!

发布了26 篇原创文章 · 获赞 2 · 访问量 2347

猜你喜欢

转载自blog.csdn.net/qq_42909545/article/details/93158170