为了账号安全,请及时绑定邮箱和手机立即绑定

当 age = 8 时,结果正确,但 age = 20 时,为什么没有打印出 adult?

age = 8
if age >= 6:
   print 'teenager'
elif age >= 18:
   print 'adult'
else:
   print 'kid'

当 age = 8 时,结果正确,但 age = 20 时,为什么没有打印出 adult?

如果要修复,应该如何修复?


正在回答

6 回答

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
task.py
当 age = 8 时,结果正确,但 age = 20 时,为什么没有打印出 adult

age = 8
if age >= 6:
    print 'teenager'
elif age >= 18:
    print 'adult'
else:
    print 'kid'
'''

# age = int(raw_input('请输入你的年龄:'))
age = 20
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
else:
    print 'kid'


# 如果按照分数划定结果:
#
#     90分或以上:excellent
#
#     80分或以上:good
#
#     60分或以上:passed
#
#     60分以下:failed

score = int(raw_input('请输入你的成绩:'))
if score >= 90:
    print 'excellent'
elif score >= 80:
    print 'good'
elif score >= 60:
    print 'passed'
else:
    print 'failed'


0 回复 有任何疑惑可以回复我~

分支结构进入一层就不会进入其他层了,我觉得修改判断条件的顺序逻辑上让我很不舒服,所以把条件修改的更加严谨了,可以得到正确结果。

改正代码:

age = 20 

if age >= 6 and age < 18:

    print 'tennger'

elif age >= 18:

    print 'adult'

else:

    print 'kid'


1 回复 有任何疑惑可以回复我~

特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。

所以在:

age = 20
if age >= 6:
    print 'teenager'
elif age >= 18:
    print 'adult'
else:
    print 'kid'

这个代码里先执行第一个判断,age>=6 因为age=20,这里判断是true,直接打印'teenager'。而不再执行后面的判断。

所以要修复这个问题,就应该使判断条件较大的优先执行,更改后就是:

age = 20
if age >= 18:
    print 'adult'

elif age >= 6:
    print 'teenager'
    
else :
    print 'kid'

这样,执行第一个判断age>=18,这里age=20,判断为true。打印'adult'。不执行后续语句。

如果,age=8,那么执行第一个判断age>=18,  就不符合,然后执行下一个age>=6,判断为true。打印'teenager'不执行后续语句

能理解吗。


9 回复 有任何疑惑可以回复我~

if ,elif,else 3个分支,执行任何一个都会程序执行结束。进入第一if条件后,虽然第二个elif条件也满足,但是只会进入第一个。要如下改才可以:
age = 8
if age >= 18:
   print 'adult'
elif age >= 6:
   print 'teenager'

else:

   print 'kid'
注意:if ,elif,else 条件一定要严密。

1 回复 有任何疑惑可以回复我~

age = 8
if age >= 18:
   print 'adult'
elif age >= 6:
   print 'teenager'

else:

   print 'kid'

这样应该可以了

1 回复 有任何疑惑可以回复我~
#1

qq_听风看月_0

这个第一个不匹配,不会打出adult,第二个条件匹配,结果输出为teenager
2018-07-20 回复 有任何疑惑可以回复我~

因为这里是一个条件判断 if,elif,else这里有3个分支,和其他编程语言一样,进入了一个分支,肯定就不会进入第二个分支了,对应于你这里的代码,执行流程就是,首先进来判断8 >= 6,结果为True,进入分支打印teenager,然后程序就结束了,如果你每个条件都判断,那么你就都写if来判断,而不是elif

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

当 age = 8 时,结果正确,但 age = 20 时,为什么没有打印出 adult?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信