小甲鱼python零基础课后习题005闲聊之Python的数据类型

本文深入探讨Python中的数据类型,包括整型、浮点型、字符串和布尔型的特性与区别,以及如何使用int(), float(), str()进行类型转换。同时,介绍了type()和isinstance()函数的应用场景,帮助理解变量类型的判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、测试题

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

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

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

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

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

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

6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?

二、动动手

0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。

如果你尝试过以下做法,请举下小手:

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

或者可能这样:

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

以上方法的思路是正确的,不过似乎忽略了一点儿:就是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.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!


我的答案:

一、

0. bool--布尔型,float--浮点型,str--字符串型。

1. 计算机只认识二进制数,所有的编程语言最终都会转换成简单的二进制,而且二进制只有两个数:0 和 1。因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上!

2. int()取整是向下取整的。

3.

>>> int(3.4+0.5)
3
>>> int(6.9+0.5)
7
>>> 

4. Python在定义变量的时候不用指明具体的的类型,解释器会在运行的时候会自动检查变量的类型,并根据需要进行隐式的类型转化。在实际的开发中,为了提高代码健壮性,仍需要进行数据类型的检查。我们首先想到的就是用type(),比如使用type判断一个int类型。

import types
if type(1) is types.Integer:
    print('1是int类型')
else:
    print('1不是int类型')

#上面程序输出:1是int类型
# 示例来源:http://www.xinxingzhao.com/blog/2016/05/23/python-type-vs-isinstance.html

我们在types中可以找到一些常用的类型,以python3为例:

types.BuiltinFunctionType        # 内建函数,比如int()
types.BuiltinMethodType          # 内建方法,指的是类中方法
types.CodeType                   # 代码块类型
types.DynamicClassAttribute      
types.FrameType
types.FunctionType               # 函数类型
types.GeneratorType
types.GetSetDescriptorType
types.LambdaType                 # lambda类型
types.MappingProxyType            
types.MemberDescriptorType
types.MethodType                 # 方法类型
types.ModuleType                 # module类型
types.SimpleNamespace
types.TracebackType
types.new_class
types.prepare_class
import types
class UserInt(int):
    def __init__(self, val=0):
        self.val = int(val)

i = 1
n = UserInt(2)
print(type(i) is type(n))

# 输出结果:Faulse
#说明 i 和 n 的类型是不一样的,而实际上UserInt是继承自int的,
 #所以这个判断是存在问题的,当我们对Python内建类型进行扩展的时候,
 #type返回的结果就不够准确了。

对于内建的基本类型来说,使用tpye来检查是没有问题的,可是当应用到其他场合的时候,type就显得不可靠了。这个时候我们就需要使用isinstance来进行类型检查。

#格式:isinstance(object, classinfo)
>>> type(4)
<class 'int'>
>>> isinstance(4,int)
True
>>> class

5. python3支持中文命名变量名,因为其源码文件默认使用utf-8编码(支持中文)。科普:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

>>> 矩形长 = 3
>>> 矩形宽 = 2
>>> 矩形面积 = 矩形长*矩形宽
>>> 矩形面积
6

二、

0.程序如下:

print('----------文字小游戏3.0版----------')
import random
secret = random.randint(1,10)
chance = 3
guess = 0
print('玩个游戏吧~给你'+str(chance)+'次机会,猜一个1~10范围的整数')
print('请猜一下小甲鱼心里想的数字:',end='嘿,我猜')
while (guess!=secret) and (chance>0):
    temp = input()
    while not temp.isdigit():
        print('抱歉 _||,输入不合法!',end=' ')
        temp = input('请输入一个整数:')
    guess = int(temp)
    chance -= 1
    if guess == secret:
        print('卧槽,你是小甲鱼肚子里的蛔虫吗!?')
        print('哼,猜对了也没有奖励╭╯^╰╮')
    else:
        if guess > secret:
            print('哥,大了!大了!')
        else:
            print('嘿~小了!小了!')
        if chance>0:
            print('哎呀!猜错了!请重新输入吧~',end=' ')
        else:
            print('机会用完了哦⊙o⊙…')
print('游戏结束,不玩了^_^')

1.程序如下:

print('---------------------今年是平年还是闰年呢?--------------------')
temp = input('请输入一个年份的数字:')
while not temp.isdigit():
    print('非法输入!')
    temp = input('请重新输入数字:')
year = int(temp)
remainder = year%4
if remainder == 0:
    print(str(year)+'是闰年')
else:
    print(str(year)+'不是闰年')

# 输入2019。输出:>>>2019不是闰年

2. 课堂重点:

  • python的数据类型
        字符串的相加->>拼接
        数字的相加->>数字
        类型分类:
        1.整型:整型和长整型已结合,长度不受限制
        2.浮点型:俗称小数
        3.e记法:不属于数据类型。属于一种科学计数法,表示位数很大(小)的数。1.2e11  12E10 e表示10
        4.布尔类型:特殊的整型。用Ture或Faulse表示。Ture等于1,Faulse等于0。
  • 数据类型的转换:
        int()--整型转换。字符串转整(必须是数字形式的字符串,文字形式不行),浮点转整(截断小数点后面的所有数字)
        float()--浮点型转换
        str()--字符串转换。把整型或浮点型或e记法的数值数字变换成'文本'
  • 用str(BIF)当做变量时的风险:
        使得其BIF的身份被代替,丧失其功能。恢复原来BIF身份的方法:del str
  • type()函数用于判断单个变量的类型,比如type(5.3),得出的是<class 'float'>

    isinstance()也可以用于判断变量是否属于指定的变量,如isinstance(5.2 int),返回的就是Faulse,说明5.2不是int类型。

 


参考答案:https://www.jianshu.com/p/e7226241eed0

作者:无罪的坏人
链接:https://www.jianshu.com/p/e7226241eed0
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值