第005讲 闲聊之Python的数据类型
测试题:
-
在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
答:bool表示布尔类型:True、False;
float表示浮点型,带小数点;
str表示字符串 -
你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
答:布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。
布尔型运算结果常用于条件语句:0为false,1为true(非0)。Bool表示布尔型变量,也是逻辑型变量的定义符。 -
使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
答:结果是向下取整,取前面的整数,对于负数来说是向上取整。 -
我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
答:round()是四舍五入,但是不能太精确;直接加0.5也可以:a=8.6;int(a+0.5) -
取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
答:取得一个变量的类型使用同type(),但是确认两个是不是同一类型使用isinstance() -
Python3 可以给变量命名中文名,知道为什么吗?
答:Python3源代码文件中默认使用UTF-8编码(支持中文),所以中文代码是合法的。 -
【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?
答:我觉得课后作业对于没有编程基础得人来说有难度。
动动手:
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() 所有字符都是数字或者字母,为真返回 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
好了,文字教程就到这里,大家赶紧趁热打铁,改造我们的小游戏吧!
答:
import random
times = 3
secret = random.randint(1,10)
print("------------------我爱鱼c工作室------------------")
guess = 0
print("玩一个小游戏吧,给你"+str(times)+"次机会哦(一个1—10范围内的整数)")
print("不妨猜一下小鱼现在心里想的是那个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
while not temp.isdigit():
print("抱歉,输入不合法,",end="")
temp = input("请输入一个整数:")
guess = int(temp)
times = times - 1
if guess == secret:
print("我去,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~")
else:
print("嘿,小了!小了!!")
if times > 0:
print("哎呀,猜错啦,请重新输入吧:",end="")
else:
print("机会已经用完啦!")
print("游戏结束,不玩啦^_^")
- 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。
答:
print('------------------测一测年份是平年还是闰年------------------')
print("请输入年份数字:", end=" ")
temp = input()
while not temp.isdigit():
print("抱歉,输入不合法,",end='')
temp = input("请输入一个整数:")
year = int(temp)
runyear = year%4
if runyear == 0:
print(str(year)+"是闰年")
else:
print(str(year)+"是平年")
改正:
print('------------------测一测年份是平年还是闰年------------------')
print("请输入年份数字:", end=" ")
temp = input()
while not temp.isdigit():
print("抱歉,输入不合法,",end='')
temp = input("请输入一个整数:")
year = int(temp)
if year%400 == 0:
print(str(year)+"是闰年")
else:
if(year%4 == 0) and (year%100 != 0):
print(str(year)+"是闰年")
else:
print(str(year)+"是平年")
- 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
答:Python的数据类型:
Bool类型:特殊整形,True=1,False=0;True+True=2(加减乘除都可)
整型:无小数点
浮点型:有小数点
E记法(复数):科学计数法,e大小写都可以,都会变成浮点型
字符串:str()会带‘’;整数:int();浮点数:float()加小数点;三者之间互相转换
获得关于类型的信息:type(),isinstance(,)返回bool(两个类型一致为True,不一致为False)
测试程序:
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
# 这里先给guess赋值(赋一个绝对不等于secret的值)
guess = 0
# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("玩一个小游戏吧,给你"+str(times)+"次机会哦(一个1—10范围内的整数)")
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
while not temp.isdigit():
print("抱歉,输入不合法,",end='')
temp = input("请输入一个整数:")
guess = int(temp)
times = times - 1 # 用户每输入一次,可用机会就-1
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了,小了~~~")
if times > 0:
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
练习题(来自小甲鱼官方论坛)