当前位置: 代码迷 >> 综合 >> 小甲鱼Python课后题及答案之第五讲
  详细解决方案

小甲鱼Python课后题及答案之第五讲

热度:15   发布时间:2024-02-22 04:12:03.0

解答题:

0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?

bool布尔类型,float浮点型,str字符串类型。

1.你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗? 

计算机只认识二进制,由于二进制只有两个数0和1,因此用0和1来表示在合适不过了,因为不用浪费在资源在转换的过程上

2.使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?

向下取整。

3.人类思维是习惯“四舍五入”法,有什么办法使得int()按照“四舍五入”的方式取整?

加0.5

 
  1. >>> a=8.6

  2. >>> int(a+0.5)

  3. 9

4.取的一个变量的类型,视频中介绍可以使用type()和 isinstance(),你更倾向使用哪个?

type() 直接返回一个输入的变量的类型;

isinstance() 返回变量与另一个变量的类型比较,如果是统一类型则返回TRUE,不同则返回FALSE。

5.Python3 可以给变量命名中文名,知道为什么吗?

Python3 源码文件默认使用 UTF-8编码(支持中文),这就中文代码是合法的。

我的答案:

0:int:整型,bool:布尔类型,float:浮点型,str:字符串,e记法

1:规定。bool类型是int类型的子类,所以在某种原因下,规定了Ture为1,Flase为0。

2:向下取整。向上向下取整都是不管四舍五入的,向上取整指当计算的结果不为整数时取大于计算结果的整数,向下取整指当计算的结果不为整数时取小于计算结果的整数。

3:方法1:使用python得到内置函数round。但round存在一个问题,当小数很小,又需要精确的时候,则会在精确度上出问题。

方法2:采用def round_up(value):,四舍五入保住两位小数。

小甲鱼答案:

5.4"四舍五入"结果为:5,int(5.4+0.5)==5.

5.6"四舍五入"结果为:6,int(5.6+0.5)==6.

4:我更倾向于type(),个人觉得这个用起来更方便,直接在括号里面写入想查询的数据就可以了,而在isinstance()中,不仅要写入数据,还要写入类型,从而让程序来判断对错,在目前初学的情况下,我暂时是不需要用到的。

5:创建于2007年5月的Python增强提案PEP 3131,指出很多Python开发者并不熟悉英语, 更希望用母语对类/方法进行命名, 而不是用经常有误的英文翻译. 对使用同样母语的开发者来说, 用母语命名的标识符可以提高代码清晰度和可维护性.

小甲鱼答案:Python3 源码文件默认使用 UTF-8编码(支持中文),这就中文代码是合法的。

实践题:

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'>!  

  1. print('--------猜数字游戏3.0--------')

  2. import random

  3. num = random.randint(1,10)

  4. count = 3

  5. guess =0

  6. while (guess != num) and (count > 0):

  7. temp = input('请输入一个数字:',end='')

  8. while not temp.isdigit():

  9. temp = input('sorry,输入类型有误,请输入一个整数:')

  10. guess = int(temp)

  11. count -= 1

  12. if guess == num:

  13. print('bingo!')

  14. else:

  15. if guess > num:

  16. print('大了!')

  17. else:

  18. print('小了!')

  19. if count > 0:

  20. print('再来一次:',end='')

  21. else:

  22. print('机会用完了!')

  23. print('游戏结束!')

其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。

所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!

备注:

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

例如:

>>> s = 'I LOVE FISHC'

>>> s.isupper()

>>> True

1.写一个程序,判断给定年份是否为闰年

 
  1. print('--------求闰年--------')

  2. while 1:

  3. temp = input('请输入一个年份:')

  4. while not temp.isdigit():

  5. temp = input('sorry,输入类型有误,请输入一个数值年份:')

  6. year = int(temp)

  7. if year/400 == int(year/400):

  8. print(temp+'是闰年')

  9. else:

  10. if (year/4 == int(year/4)) and (year/100 != int(year/100)):

  11. print(temp+'是闰年')

  12. else:

  13. print(temp+'不是闰年')

我的答案:

0:

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

while temp.isdigit() == False:

    print("抱歉,输入不正确,",end='')

    temp = input("请输入一个整数:")

else:

    count = 3

    while count > 0:

        guess = int(temp)

        if guess == 8:

            print("恭喜你,猜对了!")

            break

        else:

            if guess > 8:

                print("大了大了!")

            else:

                print("小了小了!")

            temp = input("哎呀,错啦!再猜:")

            guess = int(temp)

            count = count - 1

print("好,游戏结束!")

  相关解决方案