GitHub --Python学习--Day 1到Day 7总结笔记--目标准确方法正确才能有效学习--一个月熟练Python语言

注意事项!!!

首先,感谢各位对Python感兴趣的初学者的刚看。本博主是一名研究生专业是信息与通信工程,目前研二,现在处于找工作的状态。就目前的状况,现在还没有找到自己的就业职位,当现在目前都是以语言编程为主的。所以,现在想就Python语言的学习进行记录。网上Python的学习课程数不胜数,你可能根本不知道哪一个视频适合你。GitHub上的这个连接的内容,这个连接有详细的内容需要一百天才可以学习结束,时间太长。https://github.com/jackfrued/Python-100-Days/blob/master

其次,博主也是一边学习一边总结。前期的方法是采用GitHub这个链接🔗将基础知识过一遍,等把基础知识学习结束,会在进行调整。博主必须保证有效学习,马上要找工作。大家一起讨论!!

一、Day 1至Day 2  认识Python 

在这两章中其实并没有什么,就是纯纯的介绍Python 的起源以及安装。我在安装的时候也遇到了很多问题,安装好了发现有问题,又卸载重装,来来回回三四次。后来,我舍友给我推荐了http://哔哩哔哩的一位博主讲解,成功解决问题。他讲解的特别详细,需要的话可以联系我哦!!

二、 Python 中的变量以及运算符

1、变量

①变量的核心是:变量作为数据的载体!!!简单的说就是一块用来保存数据的内存空间,变量的值可以被读取和修改。

②变量的类型:

变量的类型
变量类型作用
整数(int)可以处理任意大小的整数,支持各种进制数
浮点数(float)浮点数也就是小数
字符串型(str)以单引号或双引号包裹起来的任意文本
布尔型(bool)只有TrueFalse两种值

变量类型使用例子

a = 100
b = 123.45
c = '123'
d = '100'
e = '123.45'
f = 'hello, world'
g = True
print(float(a))         # int类型的100转成float,输出100.0
print(int(b))           # float类型的123.45转成int,输出123
print(int(c))           # str类型的'123'转成int,输出123
print(int(c, base=16))  # str类型的'123'按十六进制转成int,输出291
print(int(d, base=2))   # str类型的'100'按二进制转成int,输出4
print(float(e))         # str类型的'123.45'转成float,输出123.45
print(bool(f))          # str类型的'hello, world'转成bool,输出True

2、运算符

Python 语言支持很多种运算符,下面的表格按照运算符的优先级从高到低,对 Python 中的运算符进行了罗列。

运算符描述
[][:]索引、切片
**
~+-按位取反、正号、负号
*/%//乘、除、模、整除
+-加、减
>><<右移、左移
&按位与
<=<>>=小于等于、小于、大于、大于等于
==!=等于、不等于
isis not身份运算符
innot in成员运算符
notorand逻辑运算符
=+=-=*=/=%=//=**=&=|=^=>>=<<=赋值运算符

在这些运算符中,最重要的是%//这两个运算符。下面这张图片详细地解释了这两符号的作用。

尤其是用与提取一个数的个、十、百、千位。

重点(后面会用到):一个数位数提取公式:

百位 = num // 100
十位 = num // 10 % 10
个位 = num % 10

三、分支结构与循环结构

1、分支结构

分支结构又很多,常用的就是if-else结构。构造分支结构最常用的是ifelifelse三个关键字。分支结构的核心思想就是将可能出现的情况都陈列出来。例如我们要写一个身体质量指数(BMI)的计算器。身体质量质数也叫体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个指标,计算公式如下所示。通常认为 18.5≤BMI<24 是正常范围, BMI<18.5 说明体重过轻, BMI≥24 说明体重过重, BMI≥27 就属于肥胖的范畴了。

BMI=\frac{height}{weight^{2}}

上面公式中的体重以千克(kg)为单位,身高以米(m)为单位。

height = float(input('身高(cm):'))
weight = float(input('体重(kg):'))
bmi = weight / (height / 100) ** 2
print(f'{bmi = :.1f}')
if bmi < 18.5:
    print('你的体重过轻!')
elif bmi < 24:
    print('你的身材很棒!')
elif bmi < 27:
    print('你的体重过重!')
elif bmi < 30:
    print('你已轻度肥胖!')
elif bmi < 35:
    print('你已中度肥胖!')
else:
    print('你已重度肥胖!')

 2、循环结构

for-in 循环

所谓循环结构,就是程序中控制某条或某些指令重复执行的结构。如果明确知道循环执行的次数,我们推荐使用for-in循环。假设我们用for-in循环实现从 1 到 100 的偶数求和。

total = 0               # 定义一个变量,作为求和的载体。
for i in range(2, 101,2): # 定义一个循环变量i,range的取值为[2,101),步长为2
    total += i          # 它相当于total = total + i,这句话实现了累加的操作
print(total)

while循环

如果要构造循环结构但是又不能确定循环重复的次数,我们推荐使用while循环。while循环通过布尔值或能产生布尔值的表达式来控制循环,当布尔值或表达式的值为True时,循环体(while语句下方保持相同缩进的代码块)中的语句就会被重复执行,当表达式的值为False时,结束循环。假设我们用for-in循环实现从 2 到 100 的偶数求和。

total = 0          # 定义一个变量,存储求和的数值
i = 2              # 定义循环变量i,实现求和数的累加,i设为2,可以得到偶数
while i <= 100:    # 这里不像for-in循环那样设置循环范围,而是直接i的条件
    total += i     # 实现偶数的求和
    i += 2         # 得出下一个偶数
print(total)

break和continue

如果把while循环的条件设置为True,这时,条件属于恒成立无法结束循环。那么如何让使用while构造循环结构,计算 1 到 100 的偶数和呢?

当我们用break来实现求和,

total = 0
i = 2           # 这两行代码和之前解释的一样
while True:     # while True构造了一个条件恒成立的循环,也就意味着如果不做特殊处理会陷入死循环
    total += i  # 
    i += 2      # 代码到这一行就已经陷入死循环
    if i > 100: # 为了走出死循环,利用if语句,当在i的值超过 100 后让循环停下来,我们使用了break
        break 
print(total) 

当我们用continue来实现求和,

total = 0                 # 定义变量,存储数值
for i in range(1, 101):   # 定义变量,列出1-100的偶数
    if i % 2 != 0:        # 这里和break不同,break是直接得出偶数进行求和直至结束,
        continue          # 而continue是排除掉奇数在继续求和直到到达i的最大值
    total += i
print(total)

四、分支和循环结构实战

通过前面的学习,大家对 Python 中的分支结构和循环结构已经有了初步的认知。分支结构和循环结构是构造程序逻辑的基础。目前,我对分支结构和循环结构的语法是能够理解的,但是遇到实际问题的时候又无法下手;看懂别人的代码很容易,但是要自己写出类似的代码却又很难。我想,这时应该坚持住多练习,马上就可以突破瓶颈期。我的练习量还没有达到让你可以随心所欲写出代码的程度,只要加强编程练习,通过量的积累来产生质的变化,这个问题迟早都会解决的。我把我认为比较难的、系统的代码都背下来。所以我现在的目标就是只要想起来,就在脑子里回想一边,怎么编码。下面是我认为比较常见而且以后可以用的逻辑表达。

实战一:100以内的素数

这个例子是每种语言都会用到的例子,所以特别重要!!!

       找出素数之前,首先我们都知道什么是素数?素数指的是只能被 1 和自身整除的正整数(不包括 1)。从这句话,可以得出两个信息:①只能被 1 和自身整除的正整数;②1不是素数

       要找出素数首先得把2-100的数列出来(1不是素数所以从2开始)-----> 所以会利用for循环

       ①只能被 1 和自身整除的正整数---->所以我们需要引入一个循环变量i来满足条件①。在满足条件①时,第一步先得将i的数列出来,那么怎么找到i的范围就是关键!!!

        说实话到这还是一脸懵逼!所以我搜了百度,素数的验证,我看到一条信息,我就懂了。
 这个信息就是:素数验证,排除法:原理:用2到根号n之间的整数依次试除,若存在能乘除的数,则n不是素数。

       其次我们肯定是利用什么样的条件判断是不是素数----->所以这点会用到if语句、之前提到布尔型变量类型。



# 经过上述分析,我们试试写一下代码

for num in range(2,100)
    is_prime = True
    for i in range(2,int(num **0.5)+1):
        if num % i == 0:
           is_prime = False
           break
    if is_prime:
       print(num)

实战二:斐波那契数列

       斐波那契数列的特点是数列的前两个数都是 1,从第三个数开始,每个数都是它前面两个数的和。按照这个规律,斐波那契数列的前 10 个数是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55

       我们来分析这段话,首先,每个数都是前面两个数的和------->需要引入两个变量,如a,b。

       我们可以观察出第三位数以及后面的数可以显而易见的看出来,而第一、二位数是怎么得出来的?因为我们定义了两个变量,第二位可以是0+1。所以我可以让a,b的初始值为0,1。同时把b 直接赋给第一位数。

# 因此根据上述的分析,可以编码

a , b  = 0 , 1

for _ in range(20):
   a , b = b , a + b  # 上面循环中的a, b = b, a + b表示将变量b的值赋给a,把a + b的值赋给b。
                      # 通过这个递推公式,我们可以依次获得斐波那契数列中的数。
   print(a)

实战三:找出 100 到 999 范围内的所有水仙花数

      在数论中,水仙花数(narcissistic number)也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个 N 位非负整数,其各位数字的 N 次方和刚好等于该数本身。例如,407 = 4^{3}+0^{3}+7^{3}所以 407也是一个水仙花数。

在编写代码时,关键在于怎么将它拆分为个位、十位、百位,然后再利用if语句判断是否符合水仙花数。前面已经见过怎么提取一个数的位数啦!!!!

for num in range(100,1000):
    baiwei = num // 100
    geiwei = num // 10 % 10
    gewei  = num % 10
    if num == num == baiwei ** 3 + shiwei ** 3 + gewei ** 3:
       print(f'{num}={baiwei}^3 + {shiwei}^3 + {gewei}^3')

 实战四:CRAPS赌博游戏

CRAPS又称花旗骰。规则是:

玩家第一次摇骰子如果摇出了 7 点或 11 点,玩家胜;

玩家第一次如果摇出 2 点、3 点或 12 点,庄家胜;

玩家如果摇出其他点数则游戏继续,玩家重新摇骰子,如果玩家摇出了 7 点,庄家胜;

如果玩家摇出了第一次摇的点数,玩家胜;

其他点数玩家继续摇骰子,直到分出胜负。

为了增加代码的趣味性,我们设定游戏开始时玩家有 1000 元的赌注,每局游戏开始之前,玩家先下注,如果玩家获胜就可以获得对应下注金额的奖励,如果庄家获胜,玩家就会输掉自己下注的金额。游戏结束的条件是玩家破产(输光所有的赌注)。

我们对这个游戏进行分析:从游戏步骤来说分为两部分(一部分是下注钱;另一个是摇的两个骰子数之和)------>需要引入变量从游戏的玩法步骤来说也分为两步(一部分是之间分胜负,另一部分是还需要进行下一步摇骰子)----->这个需要有一个嵌套的循环。同时,游戏规定玩家需要把1000元赌注全部输掉游戏才能结束。我们并不知道循环什么时候结束,所以需要用到while true语句。

import random

money = 1000
while money > 0:
    print(f'你的总资产为: {money}元')
    # 下注金额必须大于0且小于等于玩家的总资产
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
    # 用两个1到6均匀分布的随机数相加模拟摇两颗色子得到的点数
    first_point = random.randrange(1, 7) + random.randrange(1, 7)
    print(f'\n玩家摇出了{first_point}点')
    if first_point == 7 or first_point == 11:
        print('玩家胜!\n')
        money += debt
    elif first_point == 2 or first_point == 3 or first_point == 12:
        print('庄家胜!\n')
        money -= debt
    else:
        # 如果第一次摇色子没有分出胜负,玩家需要重新摇色子
        while True:
            current_point = random.randrange(1, 7) + random.randrange(1, 7)
            print(f'玩家摇出了{current_point}点')
            if current_point == 7:
                print('庄家胜!\n')
                money -= debt
                break
            elif current_point == first_point:
                print('玩家胜!\n')
                money += debt
                break
print('你破产了, 游戏结束!')

 我将代码的思路写成一个思维框图,有助于大家理解。

以上就是对变量、运算符、分支循环结构的总结。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值