零基础入门学习Python笔记 P1-P5

313 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第一课

Python安装

教程使用版本,3.3.2,Python下载安装包并下载。 安装后看到IDLE,是Python shell,是输入文本与程序交互的界面,类似Windows的cmd窗口,可以直接键入代码。 print内可以是值、参数、表达式 例如: print(1) print(a) #是已定义的变量 print(a+2) print('a'+'b') 加号:前后参数或值需为同一种数据类型,否则不能相加,例如'a'+1

学习方式

1、课堂跟打代码 2、写作业 3、善用搜索引擎

第二课

idle基本使用、print、input

python中的缩进需要十分精准,缩进相当于c语言的括号的作用 一行一句代码

print('-------Fred-2022-7-22--------')
a = input('猜数字,1-100:')
if a == 10:
    print('猜对了,聪明!')
else:
    print('猜错了,笨蛋!')

image.png 写程序之前善用流程图,流程图可以手绘,也可以借助工具。通过流程图数量思路,更容易查错。

BIF = built-in functions,保留字

print、input、int 都是BIF dir(builtins) 可以查Python bif help(bif) 可以查保留字功能 help(sorted)

image.png

赋值:从右往左算

问答作业

  1. 什么是bif? built-in functions,python的保留字,可以直接使用的内置函数,
dir(__builtins__) #可以查bif
help(bif) #可以查保留字用途
  1. 用课堂上的方法数一数Python3提供了多少个bif? 156(3.10.5版本)
len(dir(__builtins__))
  1. 在Python看了,'FishC'和'fishc'一样吗? 不一样,大小写字符的编码不同,字符串值不同
  2. Python中什么是最重要的,你赞同吗? 格式?美观?缩进。 如果在正确的位置输入冒号“:”,IDLE 会自动将下一行缩进!
  3. '='和'==‘表示不同含义,编程过程中会不小心吧'=='误写成'='吗?有什么好办法解决这个问题? 容易误写,编译的时候一般会报错,可以及时修改。另外可以在写程序之前画流程图,判断的地方多检查一遍。
  4. 听说过'拼接'这个词吗? 字符串拼接?
a = 'a'
b = 'b'
c = a+b

c = 'ab'

编程作业

0、编写程序,要求输入姓名并打印”你好,姓名!”

print('-------Fred-2022-7-22--------')
a = input('输入姓名:')
print('你好,'+a+'!')

image.png

1、编写程序:calc.py 要求用户输入1到100之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”

print('-------Fred-2022-7-22--------')
a = input('输入1-100:之间的数字:')
if a == '18':
    print('你好漂亮')
else:
    print('你好丑')

print('THE END.')

image.png

  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 新内容:bif保留字,可以在idle中通过dir查询所有bif,查询结果是list,可以用help查询bif的使用方法。

第三课

变量

Python:把值贴在值上面,“Python没有变量,只有名字” 变量不必声明类型,可以直接赋值,也可以修改,新值可以是不同类型的值,例如:

a = 'a'
a = 1

不会报错

使用变量前,要给变量赋值,不能直接使用没有赋值的变量。 变量名可以包含字母、数字、下划线,但不能以数字开头。(Python是c写出来的) 大小写是不同的。 尽可能给变量取专业的名字,提高程序的可读性,降低沟通成本。

字符串

即文本,引号内的一切东西。双引号或单引号都可以,但必须是相同的引号对。 如果字符串中需要打印单双引号,可以使用转译符号
' " \ = / 原始字符串:在字符串前加r,可以对\自动转译 例如

'c:\a\b'
'c:\x07\x08'
r'c:\a\b'
'c:\\a\\b'
print(r'c:\a\b')
c:\a\b

image.png

多行字符串

需要使用三重引号字符串,会自动补换行符 \n speak english,所有的标点符号要用英文标点符号

a = '''床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。'''
a
'床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。'
print(a)
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。

image.png

字符串拼接:+

课后作业

  1. 以下哪个变量的命名不正确?为什么?

    (A) MM_520  (B) MM520  (C) 520_MM  (D) _520_MM C,变量不能用数字开头

  1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?\

myteacher = '小甲鱼' yourteacher = myteacher yourteacher = '黑夜' print(myteacher)

输出:'小甲鱼'

  1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗? myteacher = '小甲鱼' yourteacher = myteacher myteacher = '黑夜' print(yourteacher)

输出:'小甲鱼'

  1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?

first = 520 second = '520' first = second print(first)

输出:'520'

  1. 除了使用反斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串? "Let's go!" 骚啊

  2. 如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理? str = r'C:\Program Files\FishC\Good''\'

image.png 6. 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗? 拼写错误、大小写错误等,导致使用了未命名的变量

编程作业

  1. 还记得我们第一讲的动动手的题目吗?这一次要求使用变量,计算一年有多少秒? 提示:可以以 DaysPerYear(每年天数),HoursPerDay(每天小时数),MinutesPerHour(每小时分钟数),SecondsPerMinute(每分钟秒数)为变量名。
DaysPerYear = 365
HoursPerDay = DaysPerYear * 24
HoursPerDay = 24
MinutesPerHour = 60
SecondsPerMinute = 60
SecondsPerYear = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
print(SecondsPerYear)

image.png

  1. 关于最后提到的长字符串(三重引号字符串)其实在 Python3 还可以这么写,不妨试试,然后比较下哪种更方便?

string = ( "我爱鱼C,\n" "正如我爱小甲鱼,\n" "他那呱唧呱唧的声音,\n" "总缠绕于我的脑海,\n" "久久不肯散去……\n")

当然是三引号方便,不需要打很多的\n,可以自动补全。

  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 新内容:三引号自动补全多行文本的换行符\n,r原始字符自动补全斜杠\

第四课

目标:猜数字小游戏优化:①答案大或小了,应该给提示;②应该给多次机会回答,直到猜对;③目标数字应该随机,避免泄露。

import random

print('-------Fred-2022-7-22--------')
answer = random.randint(1,100)

while True:
    a = int(input('输入1-100:之间的数字:'))
    if a == answer:
        print('猜中了!')
        break
    else:
        if a > answer:
            print('大了!')
        else:
            print('小了!')

print('THE END.')

image.png

条件分支

①答案大或小了,应该给提示 比较操作符:> >= < <= == != 操作符直接有没有空格,不影响计算结果,但是操作符前后有空格,更有美感,也更可读 1<3 1 < 3 #更可读

句式: if 条件: 条件为真的操作 else: 条件为假的操作

while循环

重复运行某些代码

句式: while 条件: 条件为真的操作

and or not 逻辑操作符,可以跟任意表达式连在一起,得到一个bool类型的值 注意计算优先级

随机 random 模块

每个程序都是一个模块,moduls,random也是一个模块 random.randint(1,100) 得到随机值

课后作业

  1. 请问以下代码会打印多少次“我爱鱼C!”

while 'C': print('我爱鱼C!')

1次 会死循环,Python中只有 False None 0 "" '' () [] {} 为假,其他值均为真。

  1. 请问以下代码会打印多少次“我爱鱼C!”

i = 10 while i:     print('我爱鱼C!')     i = i - 1

10次,i=10~1执行,i=0不执行

  1. 请写出与 10 < cost < 50 等价的表达式 50 > cost > 10

  2. Python3 中,一行可以书写多个语句吗? 可以,语句之间用分号隔开即可 print('I love fishc');print('very much!')

  3. Python3 中,一个语句可以分成多行书写吗? 可以,多行文本、list、字典、带逗号的可以 一行过长的语句可以使用反斜杠或者括号分解成几行 3 > 4 and
    1 < 2 ( 3 > 4 and 1 < 2 )

  4. 请问Python的 and 操作符 和C语言的 && 操作符 有何不同?【该题针对有C或C++基础的朋友】 没听过

  5. 听说过“短路逻辑(short-circuit logic)”吗? a>b and b>a 吗? 逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。

这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy evaluation),这种行为同样也应用与 or 操作符,这个后边的课程小甲鱼会讲到,不急。

实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值(例子参考楼上那题)。

编程作业

  1. 完善第二个改进要求(为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环)并改进视频中小甲鱼的代码。
import random

print('-------Fred-2022-7-22--------')
answer = random.randint(1,100)

chance = 3
flag = True
while chance > 0:
    print('第',4-chance,'次机会!')
    a = int(input('输入1-100:之间的数字:'))
    if a == answer:
        print('猜中了!')
        flag = False
        break
    else:
        if a > answer:
            print('大了!')
        else:
            print('小了!')
        chance = chance - 1
        
if chance == 0 and flag:
    print('很遗憾,3次机会用光咯')

print('THE END.')

image.png

  1. 尝试写代码实现以下截图功能:
print('-------Fred-2022-7-22--------')

number = int(input('请输入一个整数:'))
i = 1
while i <= number:
    print(i)
    i = i + 1
  1. 尝试写代码实现以下截图功能:
print('-------Fred-2022-7-22--------')

number = int(input('请输入一个整数:'))
while number > 0:
    if number>1:
        print(' ' * (number-2),'*' * number)
    else:
        print('*')
    number = number - 1

image.png

  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 巩固:随机数 random.randint(1,100)