设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 40953|回复: 20
打印 上一主题 下一主题

【Python 第24课】 if的嵌套

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2014-4-24 18:30:50 |只看该作者 |正序浏览
和for循环一样,if也可以嵌套使用,即在一个if/elif/else的内部,再使用if。这有点类似于电路的串联。

if 条件1:
   if 条件2:
       语句1
   else:
       语句2
else:
   if 条件2:
       语句3
   else:
       语句4

在上面这个两层if的结构中,当
条件1为True,条件2为True时,
执行语句1;
条件1为True,条件2为False时,
执行语句2;
条件1为False,条件2为True时,
执行语句3;
条件1为False,条件2为False时,
执行语句4。

假设需要这样一个程序:
我们先向程序输入一个值x,再输入一个值y。(x,y)表示一个点的坐标。程序要告诉我们这个点处在坐标系的哪一个象限。
x>=0,y>=0,输出1;
x<0,y>=0,输出2;
x<0,y<0,输出3;
x>=0,y<0,输出4。

你可以分别写4个if,也可以用if的嵌套:
if y >= 0:
   if x >= 0:
       print 1
   else:
       print 2
else:
   if x < 0:
       print 3
   else:
       print 4

从流程图上来看,应该是这样。
if.jpg

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

21#
发表于 2018-4-6 10:58:27 |只看该作者
这是看了看大家的代码,得到的灵感,还可以练练函数~
  1. def quadrant(x,y):   
  2.     if x>0:
  3.         if y>0:
  4.             print('First quadrant')
  5.         elif y<0:
  6.             print('Fourth quadrant')
  7.         else:
  8.             print('The number is in active abscissa')
  9.     elif x<0:
  10.         if y>0:
  11.             print('Second quadrant')
  12.         elif y<0:
  13.             print('Third quadrant')
  14.         else:
  15.             print('The number is in negative abscissa')
  16.     else:
  17.         if y>0:
  18.             print('The number is in active ordinate')
  19.         elif y<0:
  20.             print('The number is in negative ordinate')
  21.         else:
  22.             print('The center is waiting for you!!!')
  23. x=eval(input('please enter the abscissa'))
  24. y=eval(input('please enter the ordinate'))
  25. quadrant(x,y)
复制代码
回复

使用道具 举报

0

主题

2

好友

72

积分

注册会员

Rank: 2

20#
发表于 2018-4-6 10:45:24 |只看该作者
方法一:
  1. x=eval(input('please enter the abscissa'))
  2. y=eval(input('please enter the ordinate'))
  3. if x>0:
  4.     if y>0:
  5.         print('First quadrant')
  6.     elif y<0:
  7.         print('Fourth quadrant')
  8.     else:
  9.         print('The number is in active abscissa')
  10. elif x<0:
  11.     if y>0:
  12.         print('Second quadrant')
  13.     elif y<0:
  14.         print('Third quadrant')
  15.     else:
  16.         print('The number is in negative abscissa')
  17. else:
  18.     if y>0:
  19.         print('The number is in active ordinate')
  20.     elif y<0:
  21.         print('The number is in negative ordinate')
  22.     else:
  23.         print('The center is waiting for you!!!')
复制代码
回复

使用道具 举报

1

主题

0

好友

37

积分

新手上路

Rank: 1

19#
发表于 2017-11-29 12:21:36 |只看该作者
crossin先生 发表于 2017-11-28 23:39
没有return默认返回None,相当于 return None
你print了,它就被输出了

感谢crossin老师解惑
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2017-11-28 23:39:46 |只看该作者
Imagination 发表于 2017-11-28 19:37
可是我把代码最后两句改了一下 ,也没有return语句 却返回None了 是怎么回事呢
def position(x,y):
    i ...

没有return默认返回None,相当于 return None
你print了,它就被输出了

x, y=eval(input())
输入用逗号隔开即可
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

37

积分

新手上路

Rank: 1

17#
发表于 2017-11-28 19:37:37 |只看该作者
woodumpling 发表于 2017-11-28 18:40
1. 你没有return语句,所以没有值被返回出来
2. 那个写法相对复杂些,以py3为例,x, y = [eval(i) for i  ...

可是我把代码最后两句改了一下 ,也没有return语句 却返回None了 是怎么回事呢
def position(x,y):
    if x>0:
        if y>0:
            print ('你输入的(%d,%d)在第一象限' % (x,y))
        elif y<0:
            print ('你输入的(%d,%d)在第四象限' % (x,y))
        else:
            print ('你输入的(%d,%d)在X轴上' % (x,y))
    elif x<0:
        if y>0:
            print ('你输入的(%d,%d)在第二象限' % (x,y))
        elif y<0:
            print ('你输入的(%d,%d)在第三象限' % (x,y))
        else:
            print ('你输入的(%d,%d)在X轴上' % (x,y))
    else:
        print ('你输入的(%d,%d)在Y轴上' % (x,y))

print ('输入坐标值确定象限')

x = int(input('请输入X值:'))  
y = int(input('请输入Y值:'))


answer = position(x,y)
print (answer)

回复

使用道具 举报

0

主题

0

好友

154

积分

注册会员

Rank: 2

16#
发表于 2017-11-28 18:40:40 |只看该作者
Imagination 发表于 2017-11-28 13:24
def position(x,y):
    if x>0:
        if y>0:

1. 你没有return语句,所以没有值被返回出来
2. 那个写法相对复杂些,以py3为例,x, y = [eval(i) for i in input().split(',')]
回复

使用道具 举报

1

主题

0

好友

37

积分

新手上路

Rank: 1

15#
发表于 2017-11-28 13:24:21 |只看该作者
本帖最后由 Imagination 于 2017-11-28 15:04 编辑

def position(x,y):
    if x>0:
        if y>0:
            print ('你输入的(%d,%d)在第一象限'%(x,y))
        elif y<0:
            print ('你输入的(%d,%d)在第四象限'%(x,y))
        else:
            print ('你输入的(%d,%d)在X轴上'%(x,y))
    elif x<0:
        if y>0:
            print ('你输入的(%d,%d)在第二象限'%(x,y))
        elif y<0:
            print ('你输入的(%d,%d)在第三象限'%(x,y))
        else:
            print ('你输入的(%d,%d)在X轴上'%(x,y))
    else:
        print ('你输入的(%d,%d)在Y轴上'%(x,y))

print ('输入坐标值确定象限')
x = int(input('请输入X值:'))
y = int(input('请输入Y值:'))

position(x,y)
问题1,为什么代码里没有return 运行出来,没有NONE。要是我把最后的代码改成answer = position(x,y)  print (answer) 运行就会在最后打出NONE
问题2,能帮我改进一下吗 这个运行要先输入X 敲回车再输入Y 怎么写代码能直接输入X,Y 就运行函数呢
回复

使用道具 举报

0

主题

0

好友

60

积分

注册会员

Rank: 2

14#
发表于 2017-10-24 15:21:18 |只看该作者
  1. def Xx(x,y):

  2.     if y>=0:
  3.         if x>=0:
  4.             print(1)
  5.         else:
  6.             print(2)
  7.     else:
  8.         if x<0:
  9.             print(3)
  10.         else:
  11.             print(4)
  12. x=int(input('输入X'))
  13. y=int(input('输入y'))
  14. num = Xx(x,y)
  15. print("坐标为(%s,%s)"%(x,y))
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2016-9-2 10:48:32 |只看该作者
十三才 发表于 2016-9-1 10:58
def quadrant(x,y):
    if x>=0:
        if y>=0:

return就是把结果返回给函数调用的地方,本身并不输出。print只输出,没有加return就默认返回None
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-21 22:47 , Processed in 0.018036 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部