初学python,有关if-else的一个小问题
今天想练练python,试试if-else语句和c语言有何不同。先上一个自己定的题目:
输入天气好坏和是否吃了午饭,根据不同的场景,开启尬聊模式。
天气 - – 好、坏
是否吃过饭 - – 是、否
天气很好,没吃午饭 - ---- 今天天气不错,一会一起去吃烧烤怎么样
天气不好,没吃午饭 - ---- 一会一起去吃烧烤怎么样
天气很好,吃了午饭 - ---- 今天天气不错
天气不好,吃了午饭 - ---- ……
嗯,感觉这个应该挺简单的,就用if-else嵌套做吧。以下是我第一次写的原代码:
print('王明抬头看了看天,貌似随意地问道:“小馥,你吃过午饭了吗?”')
weather = input("请输入天气状况,用数字1代表很好,数字0代表不好:")
lunch = input("请输入是否吃过午饭,用数字0代表没吃,数字1代表吃过了:")
print('小馥低下头,说:')
if weather == 1:
if lunch == 0:
print('“还没吃”')
print('"今天天气不错,一会一起去吃烧烤怎么样"')
else:
print('“吃过了”')
print('"今天天气不错"')
else:
if lunch == 0:
print('“还没吃”')
print('"一会一起去吃烧烤怎么样"')
else:
print('“吃过了”')
print('"……"')
感觉没问题,运行:
这结果明显有问题,应该输出的是“今天天气很好”,可是却输出了“…”。再看代码,肯定是在判断天气时出错了。再用天气不好、没吃饭试试:
enmmmmm…
哪里的问题呢。。。
目前来看,语法应该没什么问题,否则应该不会出结果。那是不是输入值出错了?先用以下代码测试一下:
weather = input("请输入天气状况,用数字1代表很好,数字0代表不好:")
print(type(weather))
运行结果如下:
我的天,居然是str格式的。。。。看来要类型转换一下,把它转为int型就行了。如果我就此转为int型,估计也不会有下面的问题,更不会兴趣大发的跑来写这个。
我偏不,我突然想把它转为bool型!先用下面这段简单的代码试试。
weather = bool(input("请输入天气状况,用数字1代表很好,数字0代表不好:"))
if weather:
print('天气好')
else:
print('天气不好')
??????
我记得bool型中,0代表假,其它数字代表真;if weather为真,输出天气好,否则输出天气不好。我输入了0,代表weather为假,应该输出天气不好。这。。。什么情况?
难道我使用的bool()有问题?先用最简单的方法试一下:
a = bool(0)
print(type(a))
print(a)
没问题啊,0就是假啊,难道上段代码这段有些不一样?那再试试上段代码中的weather是什么数据类型:
weather = bool(input("请输入天气状况,用数字1代表很好,数字0代表不好:"))
print(type(weather))
print(weather)
-----------黑人问号.jpg-----------
数据类型就是bool型,输入的是0,为何值却是真????
经过仔细思考(上网百度)后,我找到了原因:
python中,bool是int的子类(继承int),故 True == 1 False == 0 是会返回Ture的
哦,不是特别懂… …
是不是可以理解为有值是真,无值才是假?试试:
print('王明抬头看了看天,貌似随意地问道:“小馥,你吃过午饭了吗?”')
weather = bool(input("请输入天气状况,天气好输入1,不好请直接回车:"))
lunch = bool(input("请输入是否吃过午饭,吃过了输入数字1,没吃过请直接回车:"))
print('小馥低下头,说:')
if weather:
if lunch:
print('“吃过了”')
print('"今天天气不错"')
else:
print('“还没吃”')
print('"今天天气不错,一会一起去吃烧烤怎么样"')
else:
if lunch:
print('“吃过了”')
print('"……"')
else:
print('“还没吃”')
print('"一会一起去吃烧烤怎么样"')
如果想表示为真,则输入数字,否则直接回车。这样,应该就能很好的使用bool类型了。
完美!
话说早知道bool这么坑,直接用0和1就行了。。。。