零基础入门学习Python(5)Python的数据类型

一. Python的一些数值类型

1. 整型

即我们平时所见的整数,其长度不受限制,如果说非要有个限制,那只限制于计算机的虚拟内存总数

2. 浮点型

即平时所说的小数
Python区分整型和浮点型的唯一方式就是看有没有小数点
e记法:即平时所说的科学计数法,用来表示特别大或者特别小的数,e代表10,后面跟着10的几次方,例如下图
在这里插入图片描述
150000=1.5e5

3.布尔类型

布尔类型是特殊的整型,尽管布尔类型用True和False来表示“真”与“假”,但布尔类型可以当作整数来对待,True=1,False=0,因此布尔类型的值是可以用来计算的,但实际上把布尔类型当成1和0来参与运算是不合适的,容易引起代码混乱
在这里插入图片描述

数据类型转换

整数、浮点数和字符串之间是可以转换的(这个图画的好丑,还显示不全,第一次用,呜呜呜)

int
str
float
整数
转换
字符串
浮点数

int()

function: 将一个字符串或者浮点数转换为一个整数
在这里插入图片描述
下面这些出错的原因是a的字符串不是表示一个数字的字符串,
attention:int()函数转换时里面的字符串不能出现中英文等不是数字的东西
在这里插入图片描述
attention:如果是浮点数转化为整型,那么Python会采取截断处理,直接砍掉小数点后面的小数而不是四舍五入
在这里插入图片描述a

str()

function:将一个数或任何其他类型转化为一个字符串
在这里插入图片描述
attention:str自从被当作变量名来使用之后,它就被赋予了另外一种身份,当你再次使用它的时候,Python会自己认为用str的新身份来代替str()函数,因此会导致下面的错误
在这里插入图片描述

float()

function:将一个字符串或整数转换为一个浮点数

在这里插入图片描述

获取变量的数据类型

我们有时候可能需要确定一个变量的数据类型,例如当用户输入时,我们需要用户输入一个整数,但用户却输入了一个字符串,那就会引发一些意想不到的错误导致程序崩溃
如下图的报错是因为用户输入的是不能转化为整数的字符串,所以程序报错
在这里插入图片描述
那么如何解决呢?

type() 函数:判断数据类型

在这里插入图片描述

isinstance()

isinstance()有两个参数,第一个参数是:待确定数据类型的值, 第二个是:指定一个数据类型,然后isinstance()会返回一个布尔类型的值,True表示两个参数类型一致,False表示两个参数类型不一致
在这里插入图片描述

扫描二维码关注公众号,回复: 12452753 查看本文章

字符串的补充

s 为字符串

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。

Task

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

  2. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
    你可能听说过计算机是很“笨”的,究其根本是因为它只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给 CPU 按照一定的规则解析。
    由于二进制只有两个数:0 和 1,因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上!

  3. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
    向下
    对于负数则刚好相反 —— 是向上取整

  4. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
    5.4 “四舍五入”结果为:5,int(5.4+0.5) == 5
    5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6

  5. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
    使用 isinstance(),因为它的返回结果比较直接

  6. Python3 可以给变量命名中文名,知道为什么吗?
    Pyhton3 源码文件默认使用utf-8编码(支持中文)

  7. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。***.
    我改进后的代码只提醒用户一次:
    attention:input返回的值永远是字符串

hits = input('猜猜我现在心里想的是哪个数字:')#input返回的值永远是字符串
while hits.isdigit():
    guess = int(hits)
    time = 1
    while guess != 8 and time < 3:
        if guess < 8:
            print('嘿,小了哦')
        else:
            print('哥们,大了大了!')
        hits = input('请重新输入吧:')
        guess = int(hits)
        time = time+1
    if guess == 8 and time <= 3:
        print('wc,你是我心里的蛔虫吗?')
        print('哼,猜中了也没有奖励')
    else:
        print('给你三次机会都猜不中')
    print('游戏结束,不玩啦!')
if hits.isdigit() == 0:
    print("抱歉输入不合法")
    hits = input('请输入一个整数:')
    guess = int(hits)
    time = 1
    while guess != 8 and time < 3:
        if guess < 8:
            print('嘿,小了哦')
        else:
            print('哥们,大了大了!')
        hits = input('请重新输入吧:')
        guess = int(hits)
        time = time+1
    if guess == 8 and time <= 3:
        print('wc,你是我心里的蛔虫吗?')
        print('哼,猜中了也没有奖励')
    else:
        print('给你三次机会都猜不中')
    print('游戏结束,不玩啦!')

在这里插入图片描述
小甲鱼代码:

import random

times = 3
secret = random.randint(1,10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (guess != secret) and (times > 0):
    temp = input()
    
    if temp.isdigit():
        guess = int(temp)
        if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
        else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
        print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1 # 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

8.写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)

这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。

我的代码:

year = input('请输入一个年份:')
while year.isdigit():
    a = int(year)
    b = a / 400
    if isinstance(b,int):
        print('闰年')
    else:
        print('不是闰年')
if year.isdigit() == 0:
    print('输入不合法') 
    year = input('要输入整数哦:')
    a = int(year)
    b = a / 400
    if isinstance(b,int):
        print('闰年')
    else:
        print('不是闰年')

执行while循环时,程序会一直跑

在这里插入图片描述
执行下面的if时:在这里插入图片描述
因此,把第一个while改成if:

year = input('请输入一个年份:')
if year.isdigit() == 1:
    a = int(year)
    b = a / 400
    if isinstance(b,int):
        print('闰年')
    else:
        print('不是闰年')
if year.isdigit() == 0:
    print('输入不合法') 
    year = input('要输入整数哦:')
    a = int(year)
    b = a / 400
    if isinstance(b,int):
        print('闰年')
    else:
        print('不是闰年')

这样程序是正确的,但只能运行一次
在这里插入图片描述
还是用while循环使得程序可以运行多次,且补充了两句可以使程序不会一直运行,但现在又发现了一个新问题,就是一直会打印出“不是闰年”
在这里插入图片描述
可能是isinstance()使用有误,换一种判断方法,这样跑是完美的(注意哦,前面的判断闰年少了一个条件,此处已补充):

year = input('请输入一个年份:')
while year.isdigit() == 1:
    a = int(year)
    b = a / 400
    c = int(b)
    if b == c:
        print('闰年')
    else:
    	 if (a / 4 == int(a / 4)) and (a/100 != int(a /100)):
        print('闰年')
        	else:
        		print("不是闰年")
    year = input('请输入一个年份:')
if year.isdigit() == 0:
    print('输入不合法') 
    year = input('要输入整数哦:')
    while year.isdigit() == 1:
        a = int(year)
        b = a / 400
        c = int(b)
        if b == c:
            print('闰年')
        if (a / 4 == int(a / 4)) and (a/100 != int(a /100)):
        	print('闰年')
        		else:
        			print("不是闰年")
        year = input('请输入一个年份:')

在这里插入图片描述
第一张截图判断条件不完整哦
在这里插入图片描述

小甲鱼代码:注意not的用法

temp = input('请输入一个年份:')
while not temp.isdigit():#not 是否定的意思
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400):
    print(temp + ' 是闰年!')
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + ' 是闰年!')
    else:
        print(temp + ' 不是闰年!')

在这里插入图片描述
小甲鱼这里的代码是有缺陷的,就是程序不能一直跑,第二块没有用到while循环,所以得多次启动程序,比较麻烦

猜你喜欢

转载自blog.csdn.net/qq_44520665/article/details/112547378
今日推荐