Crossin的编程教室

标题: 【Python 第24课】 if的嵌套 [打印本页]

作者: crossin先生    时间: 2014-4-24 18:30
标题: 【Python 第24课】 if的嵌套
和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


作者: xiaohuzai    时间: 2015-3-3 09:49
  1. def quadrant(x,y):
  2.     if x>=0:
  3.         if y>=0:
  4.             print 1
  5.         else:
  6.             print 4
  7.     else:
  8.         if y>=0:
  9.             print 2
  10.         else:
  11.             print 3


  12. print 'please input your coordinate:'
  13. x=input('the x is:')
  14. y=input('the y is:')
  15. print 'the quadrant is :'
  16. quadrant(x,y)
复制代码

作者: cross    时间: 2015-4-21 14:53

作者: cqy0720    时间: 2015-6-15 14:44
坚持学习
作者: 草办    时间: 2015-12-4 14:50
get

作者: catherinemic    时间: 2015-12-31 13:59
def quadrant(x,y):
    if x>=0:
        if y>=0:
            return 1
        else:
            return 4
    else:
        if y>=0:
            return 2
        else:
            return 3
print 'please input your coordinates:'
x=input('the x is:')
y=input('the y is:')
answer=quadrant(x,y)
print 'the quadrant is %d.'%answer


get~~
作者: 德坤    时间: 2016-4-4 22:16
图片怎怎么挂啦啊
作者: crossin先生    时间: 2016-4-5 11:29
德坤 发表于 2016-4-4 22:16
图片怎怎么挂啦啊

谢反馈,已更新
作者: jiangnoyes    时间: 2016-4-5 15:37
def xiangxian(x,y):    #英语水平不够,中文拼音来凑~
    if x>0:
        if y>0:
            print'该坐标在第一象限'
        elif y<0:
            print'该坐标在第二象限'
        else:
            print'该坐标在x轴上'
    if x<0:
        if y>0:
            print'该坐标在第三象限'
        elif y<0:
            print'该坐标在第四象限'
        else:
            print'该坐标在x轴上'
    if x==0:
        if y==0:
            print'该坐标为原点'
        else:
            print'该坐标在y轴上'

print '输入坐标值确定象限'
x=input('请输入X轴坐标')    #此种更方便,缺点是没有自动换行
y=input('请输入y轴坐标')
xiangxian(x,y)
作者: crossin先生    时间: 2016-4-5 20:08
jiangnoyes 发表于 2016-4-5 15:37
def xiangxian(x,y):    #英语水平不够,中文拼音来凑~
    if x>0:
        if y>0:

自动换行可以在提示语结尾加上一个 \n
作者: 追风    时间: 2016-5-2 16:04
1.png

作者: 十三才    时间: 2016-9-1 10:58
本帖最后由 十三才 于 2016-9-1 11:09 编辑

def quadrant(x,y):
    if x>=0:
        if y>=0:
            return 'first quadrant'

        else:
            return 'fourth quadrant'

    if x<0:
        if y>=0:
            return 'second quadrant'

        else:
            return 'third quadrant'

print'please choose your number x,y'
x=input('x=')
y=input('y=')
answer=quadrant(x,y)
print 'the answer is %s'%answer



这里面如果把‘return’换成‘print’为什么输出就不一样了?




print.png (2.22 KB, 下载次数: 214)

print的结果

print的结果

turn.png (2.11 KB, 下载次数: 217)

turn.png


作者: crossin先生    时间: 2016-9-2 10:48
十三才 发表于 2016-9-1 10:58
def quadrant(x,y):
    if x>=0:
        if y>=0:

return就是把结果返回给函数调用的地方,本身并不输出。print只输出,没有加return就默认返回None
作者: lubvi    时间: 2017-10-24 15:21
  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))
复制代码

作者: Imagination    时间: 2017-11-28 13:24
本帖最后由 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 就运行函数呢
作者: woodumpling    时间: 2017-11-28 18: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(',')]
作者: Imagination    时间: 2017-11-28 19: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)


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

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

x, y=eval(input())
输入用逗号隔开即可
作者: Imagination    时间: 2017-11-29 12:21
crossin先生 发表于 2017-11-28 23:39
没有return默认返回None,相当于 return None
你print了,它就被输出了

感谢crossin老师解惑
作者: 司南    时间: 2018-4-6 10:45
方法一:
  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!!!')
复制代码

作者: 司南    时间: 2018-4-6 10:58
这是看了看大家的代码,得到的灵感,还可以练练函数~
  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)
复制代码





欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5