小甲鱼python课后习题【1,2,3,4,5】

【学习笔记,仅供学习交流使用,知识源于鱼c论坛】

作业1:

测试题:

0、Python 是什么类型的语言?
    Python是脚本语言:(对话框形式)是为了缩短传统的编写-编译-链接-运行的电脑编程语言,特性就是简化编程,让开发者用简单的语句编写出让电脑听命令行事的程序,同时让电脑进行的相互式操作自动化,

1、IDLE 是什么?
    IDLE是一个Python Shell,shell的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE这个shell与Python进行互动。

2、print() 的作用是什么?
    print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell窗口)。

3、Python 中表示乘法的符号是什么?
    “*”

4、为什么 >>>print('I love fishc.com ’ * 5) 可以正常执行,但 >>>print('I love fishc.com ’ + 5) 却报错?
    在 Python 中不能把两个完全不同的东西加在一起,比如说数字和文本。

5、如果我需要在一个字符串中嵌入一个双引号,正确的做法是?
    你有两个选择:1、可以利用反斜杠(\)对双引号转义:",2、或者用单引号引起这个字符串。例如:’ I l"o"ve fishc.com ‘。
后面的知识:
在这里插入图片描述
如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理? >>>str = r’C:\Program Files\FishC\Good’’\’

6、 为什么我们要使用 Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?
    确实还有相当多的程序员在使用 Python2,不过 Python3 才是 Python 发展的未来,就像 XP 和 WIN7 一样,2D与3D一样。

动动手:

0、动手试试直接输入>>>5+8 与输入>>>print(5+8) 有何不同?
    不妨试试直接直接输入 >>>‘I love fishc.com!’ 与输入 >>>print(‘I love fishc.com!’) 有何不同? 没错,直接输入是将结果及类型打印到屏幕上,而print是将结果打印到屏幕上,自己试试并观察结果!
在这里插入图片描述
1、在交互模式中,使用 Python 计算一年有多少秒?
在这里插入图片描述
2. 设置你的操作系统的环境变量,以便可以轻松进入 Python 环境:
在这里插入图片描述
在这里插入图片描述

作业2:

测试题:

0、什么是BIF?
    BIF 就是 Built-in Functions,内置函数。为了方便程序员快速编写脚本程序

1、用课堂上小甲鱼教的方法数一数 Python3 提供了多少个 BIF?
    在 Python 或 IDLE 中,输入 dir(builtins) 可以看到 Python 提供的内置方法列表,如果想具体查看某个 BIF 的功能,比如 input(),可以在 shell 中输入 help(input),答案应该是 68 个,不信你自己数数看,你们肯定没有自己完成作业就来看答案!哼~ T_T。

2、在 Python 看来:‘FishC’ 和 ‘fishc’ 一样吗?
    不一样,因为 Python 是一个“敏感的小女孩”,所以不要试图欺骗她,对 Python 来说,fishc 和 FishC 是完全不同的两个名字,所以编程的时候一定要当心。不过 Python 会帮助解决可能因此出现的问题,例如只有当标识符已经赋值后(还记得吗,小甲鱼在课堂中说过 Python 的变量是不用先声明的)才能在代码中使用,未赋值的标识符直接使用会导致运行时错误,所以你很快就可以根据经验发现此问题。

3、在小甲鱼看来,Python 中什么是最重要的?你赞同吗?
    缩进!在小甲鱼看来,缩进是 Python 的灵魂,缩进的严格要求使得 Python 的代码显得非常精简并且有层次(小甲鱼阅读过很多大牛的代码,那个乱…C语言不是有国际乱码大赛嘛…)。 所以在 Python 里对待缩进代码要十分小心,如果没有正确地缩进,代码所做的事情可能和你的期望相去甚远(就像C语言里边括号打错了位置)。 如果在正确的位置输入冒号“:”,IDLE 会自动将下一行缩进!

4、 这节课的例子中出现了“=”和“= =”,他们表示不同的含义,你在编程的过程中会不小心把“= =”误写成“=”吗?有没有好的办法可以解决这个问题呢?
    C语言的话,如果 if( c == 1 ) 写成 if( c = 1 ),程序就完全不按程序员原本的目的去执行,但在 Python 这里,不好意思,行不通,语法错误!Python 不允许 if 条件中赋值,所以 if c = 1: 会报错!

5、 你听说过“拼接”这个词吗?
    在一些编程语言,我们可以将两个字符串“相加”在一起,如:‘I’ + ‘Love’ + ‘FishC’ 会得到 ‘ILoveFishC’,在 Python 里,这种做法叫做拼接字符串。

动动手:

0、 编写程序:hello.py,要求用户输入姓名并打印“你好,姓名!”
在这里插入图片描述
name = input(“请输入您的姓名:”)
print(‘你好,’ + name + ‘!’)

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

temp = input("Please input a number that among 1 to 100: ")
num = int(temp)
if 1<= num <=100:
	print('beautiful')
else:
	print('ugly')
  1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

作业3:

测试题:

0、以下哪个变量的命名不正确?为什么?
    (A) MM_520     (B)MM520     (C)520_MM     (D) _520_MM
    (C)选项不正确,因为 Python 中的变量名不能以数字开头。

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

myteacher = ‘小甲鱼’
yourteacher = myteacher
yourteacher = ‘黑夜’
print(myteacher)

会打印:小甲鱼

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

myteacher = ‘小甲鱼’ >>> yourteacher = myteacher >>> myteacher = ‘黑夜’ >>> print(yourteacher)
会打印:小甲鱼

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

first = 520
second = ‘520’
first = second
print(first)

会打印:520,
    注:这里没有单引号括起来,但是他是一个字符串,因为使用 print() 打印,所以不包含单引号。可以试试直接>>>first,它是一个字符串的。

4、除了使用反斜杠(\)进行字符转义,还有什么方法可以打印:Let’s go! 这个字符串?
    “Let’s go!”

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

6、 在这一讲中,我们说变量的命名需要注意一些地方,但小甲鱼在举例的时候貌似却干了点儿“失误”的事儿,你能看得出小甲鱼例子中哪里有问题吗?
在这里插入图片描述
在例子中小甲鱼起了个 str 名字的变量,但事实上我们发现,str 的颜色跟普通变量貌似不同?没错,str() 和 print() 都是内置函数,但 Python 貌似不介意我们对内置函数进行赋值操作,所以这点我们以后就要注意啦,否则可能会出现以下的 BUG:

print = 1
print(“I love FishC”)
Traceback (most recent call last): File “<pyshell#37>”, line 1, in
print(“I love FishC”)
TypeError: ‘int’ object is not callable

动动手:

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

1、 关于最后提到的长字符串(三重引号字符串)其实在 Python3 还可以这么写,不妨试试,然后比较下哪种更方便? 第一种:括号赋值
string = (
“我爱鱼C,\n”
“正如我爱小甲鱼,\n”
“他那呱唧呱唧的声音,\n”
“总缠绕于我的脑海,\n”
“久久不肯散去……\n”)
第二种:三引号赋值
在这里插入图片描述
2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

作业4:

测试题:

0、请问以下代码会打印多少次“我爱鱼C!”
while ‘C’: 
    print(‘我爱鱼C!’) 
无数次

1、请问以下代码会打印多少次“我爱鱼C!”
在这里插入图片描述
    会打印 10 次。

2、请写出与 10 < cost < 50 等价的表达式
    (10 < cost) and (cost < 50)

3、Python3 中,一行可以书写多个语句吗?
    可以,语句之间用分号隔开即可,不妨试试:
print(‘I love fishc’);print(‘very much!’)

4、Python3 中,一个语句可以分成多行书写吗? 可以,一行过长的语句可以使用反斜杠或者括号分解成几行,不妨试试: >>>3>4and
1<2 或者 >>>(3>4and1<2)

5、【该题针对有C或C++基础的朋友】请问Python的 and 操作符 和C语言的 && 操作符有何不同?
    关于逻辑and和or,python的用法和C的用法主要异同点
当第一个操作数为逻辑值,第二个操作数为其他类型时,执行以下规则:
a and b:在a为false(等于0)的时候,返回a,否则返回b。
a or b:在a为true(不等于0)的时候,返回a,否则返回b。
总之,and与or返回的不仅有true/false的语义,还返回了它的值。
在c中,0&&3 = 0,1&&3 = 1,在python中,0 and 3 = 0,1 and 3 = 3
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、 听说过“短路逻辑(short-circuit logic)”吗?
    逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。
    这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy evaluation),这种行为同样也应用与 or 操作符,这个后边的课程小甲鱼会讲到,不急。
    实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值(例子参考楼上那题)。

动动手:

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

import random
secret = random.randint(1,10)
print('---------------我爱鱼C工作室----------------')
temp = input("不妨猜一下小甲鱼 现在心里想的是哪个数字: ")
guess = int(temp)
Index = 3
while (Index > 0) and (guess != secret):
    if guess = = secret:
        print("我草,你是小甲鱼心里的蛔虫吗? ! ")
        print("哼,猜中了也没有奖励! ")
    else:
        if guess > secret:
            print("哥,大了大了!!! 你还有" + str(Index) + "次机会。")
        else:
            print("弟,小了小了!!!" + str(Index) + "次机会。")
        Index = Index - 1
        temp = input("猜错了,再猜一下呗:")
        guess = int(temp)
if guess == secret:
    print("我草,你是小甲鱼心里的蛔虫吗? ! ")
    print("哼,猜中了也没有奖励! ")
else:
    print("兄弟,机会用完了,再来一轮吧!")
print("游戏结束,不玩啦 ^_^!")

1、 尝试写代码实现以下截图功能:
在这里插入图片描述

temp = input('请输入一个整数:')
number = int(temp)
i = 1
while number:
    print(i)
    i = i + 1
    number = number - 1

2、尝试写代码实现以下截图功能:

temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1
    while i:
        print(' ', end = '')
        i = i - 1
    j = number
    while j:
        print('*', end = '')
        j = j - 1
    print()
    number = number - 1

end是print()函数的一个参数。end 是输出语句结束以后附加的字符串,它的默认值是换行(’\n’)。
在这里插入图片描述

作业5:

测试题:

0、在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
    bool 表示布尔类型;float 表示浮点型;str 表示字符串

1、你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
    由于计算机归根到底只认识二进制数,又因为二进制只有两个数:0 和 1,因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上!

2、使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
    我们可爱的小甲鱼说了,小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)

3、我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
    int() 固然没那么“聪明”,但机器是死的,鱼油是活的!
    5.4 “四舍五入”结果为:5,int(5.4+0.5) = = 5
    5.6 “四舍五入”结果为:6,int(5.6+0.5) = = 6
    给一个小数加0.5就会实现“四舍五入”的方法。
4、 取得一个变量的类型,视频中介绍可以使用 type() 和isinstance(),你更倾向于使用哪个?
    建议使用 isinstance(),因为它的返回结果比较直接,另外 type() 其实并没有你想象的那么简单,我们后边会讲到。
5、 Python3 可以给变量命名中文名,知道为什么吗?
    Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的:

小甲鱼 = ‘我爱你’
print(小甲鱼)
我爱你

动动手:

0、针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。 如果你尝试过以下做法,请举下小手:

1.  temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
2.  # 这种想法是因为type(1)会返回<class 'int'>,如果type(temp)返回结果一致说明输入是整数。
3.  while type(temp) != type(1):
4.      print("抱歉,输入不合法,", end='')
5.      temp = input("请输入一个整数:")

或者可能这样:

1.  temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
2.  # not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
3.  while not isinstance(temp, int):
4.      print("抱歉,输入不合法,", end='')
5.      temp = input("请输入一个整数:")

以上方法的思路是正确的,不过似乎忽略了一点儿:就是input()的返回值始终是字符串,所以type(temp)永远是<class ‘str’>!
其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。
所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!
以上方法的思路是正确的,不过似乎忽略了一点儿:就是input()的返回值始终是字符串,所以type(temp)永远是<class ‘str’>!
其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。
所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!

s为字符串
s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
s.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。

例如:

s = ‘I LOVE FISHC’
s.isupper()
True

好了,文字教程就到这里,大家赶紧趁热打铁,改造我们的小游戏吧!
在这里插入图片描述

  1. 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
    在这里插入图片描述
    在这里插入图片描述

  2. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

发布了1 篇原创文章 · 获赞 2 · 访问量 164

猜你喜欢

转载自blog.csdn.net/Mamingzuo/article/details/104450022