本文已参与「新人创作礼」活动,一起开启掘金创作之路。
第一课
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('猜错了,笨蛋!')
写程序之前善用流程图,流程图可以手绘,也可以借助工具。通过流程图数量思路,更容易查错。
BIF = built-in functions,保留字
print、input、int 都是BIF dir(builtins) 可以查Python bif help(bif) 可以查保留字功能 help(sorted)
赋值:从右往左算
问答作业
- 什么是bif? built-in functions,python的保留字,可以直接使用的内置函数,
dir(__builtins__) #可以查bif
help(bif) #可以查保留字用途
- 用课堂上的方法数一数Python3提供了多少个bif? 156(3.10.5版本)
len(dir(__builtins__))
- 在Python看了,'FishC'和'fishc'一样吗? 不一样,大小写字符的编码不同,字符串值不同
- Python中什么是最重要的,你赞同吗? 格式?美观?缩进。 如果在正确的位置输入冒号“:”,IDLE 会自动将下一行缩进!
- '='和'==‘表示不同含义,编程过程中会不小心吧'=='误写成'='吗?有什么好办法解决这个问题? 容易误写,编译的时候一般会报错,可以及时修改。另外可以在写程序之前画流程图,判断的地方多检查一遍。
- 听说过'拼接'这个词吗? 字符串拼接?
a = 'a'
b = 'b'
c = a+b
c = 'ab'
编程作业
0、编写程序,要求输入姓名并打印”你好,姓名!”
print('-------Fred-2022-7-22--------')
a = input('输入姓名:')
print('你好,'+a+'!')
1、编写程序:calc.py 要求用户输入1到100之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”
print('-------Fred-2022-7-22--------')
a = input('输入1-100:之间的数字:')
if a == '18':
print('你好漂亮')
else:
print('你好丑')
print('THE END.')
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 新内容: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
多行字符串
需要使用三重引号字符串,会自动补换行符 \n speak english,所有的标点符号要用英文标点符号
a = '''床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。'''
a
'床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。'
print(a)
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
字符串拼接:+
课后作业
- 以下哪个变量的命名不正确?为什么?
(A) MM_520 (B) MM520 (C) 520_MM (D) _520_MM C,变量不能用数字开头
- 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?\
myteacher = '小甲鱼' yourteacher = myteacher yourteacher = '黑夜' print(myteacher)
输出:'小甲鱼'
- 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗? myteacher = '小甲鱼' yourteacher = myteacher myteacher = '黑夜' print(yourteacher)
输出:'小甲鱼'
- 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗?
first = 520 second = '520' first = second print(first)
输出:'520'
-
除了使用反斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串? "Let's go!" 骚啊
-
如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理? str = r'C:\Program Files\FishC\Good''\'
6. 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?
拼写错误、大小写错误等,导致使用了未命名的变量
编程作业
- 还记得我们第一讲的动动手的题目吗?这一次要求使用变量,计算一年有多少秒? 提示:可以以 DaysPerYear(每年天数),HoursPerDay(每天小时数),MinutesPerHour(每小时分钟数),SecondsPerMinute(每分钟秒数)为变量名。
DaysPerYear = 365
HoursPerDay = DaysPerYear * 24
HoursPerDay = 24
MinutesPerHour = 60
SecondsPerMinute = 60
SecondsPerYear = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
print(SecondsPerYear)
- 关于最后提到的长字符串(三重引号字符串)其实在 Python3 还可以这么写,不妨试试,然后比较下哪种更方便?
string = ( "我爱鱼C,\n" "正如我爱小甲鱼,\n" "他那呱唧呱唧的声音,\n" "总缠绕于我的脑海,\n" "久久不肯散去……\n")
当然是三引号方便,不需要打很多的\n,可以自动补全。
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 新内容:三引号自动补全多行文本的换行符\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.')
条件分支
①答案大或小了,应该给提示 比较操作符:> >= < <= == != 操作符直接有没有空格,不影响计算结果,但是操作符前后有空格,更有美感,也更可读 1<3 1 < 3 #更可读
句式: if 条件: 条件为真的操作 else: 条件为假的操作
while循环
重复运行某些代码
句式: while 条件: 条件为真的操作
and or not 逻辑操作符,可以跟任意表达式连在一起,得到一个bool类型的值 注意计算优先级
随机 random 模块
每个程序都是一个模块,moduls,random也是一个模块 random.randint(1,100) 得到随机值
课后作业
- 请问以下代码会打印多少次“我爱鱼C!”
while 'C': print('我爱鱼C!')
1次
会死循环,Python中只有 False None 0 "" '' () [] {} 为假,其他值均为真。
- 请问以下代码会打印多少次“我爱鱼C!”
i = 10 while i: print('我爱鱼C!') i = i - 1
10次,i=10~1执行,i=0不执行
-
请写出与 10 < cost < 50 等价的表达式 50 > cost > 10
-
Python3 中,一行可以书写多个语句吗? 可以,语句之间用分号隔开即可 print('I love fishc');print('very much!')
-
Python3 中,一个语句可以分成多行书写吗? 可以,多行文本、list、字典、带逗号的可以 一行过长的语句可以使用反斜杠或者括号分解成几行 3 > 4 and
1 < 2 ( 3 > 4 and 1 < 2 ) -
请问Python的 and 操作符 和C语言的 && 操作符 有何不同?【该题针对有C或C++基础的朋友】 没听过
-
听说过“短路逻辑(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 的值(例子参考楼上那题)。
编程作业
- 完善第二个改进要求(为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环)并改进视频中小甲鱼的代码。
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.')
- 尝试写代码实现以下截图功能:
print('-------Fred-2022-7-22--------')
number = int(input('请输入一个整数:'))
i = 1
while i <= number:
print(i)
i = i + 1
- 尝试写代码实现以下截图功能:
print('-------Fred-2022-7-22--------')
number = int(input('请输入一个整数:'))
while number > 0:
if number>1:
print(' ' * (number-2),'*' * number)
else:
print('*')
number = number - 1
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 巩固:随机数 random.randint(1,100)