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
从流程图上来看,应该是这样。
作者: xiaohuzai 时间: 2015-3-3 09:49
- def quadrant(x,y):
- if x>=0:
- if y>=0:
- print 1
- else:
- print 4
- else:
- if y>=0:
- print 2
- else:
- print 3
- print 'please input your coordinate:'
- x=input('the x is:')
- y=input('the y is:')
- print 'the quadrant is :'
- 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
作者: 十三才 时间: 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, 下载次数: 384)
print的结果
-
turn.png
(2.11 KB, 下载次数: 386)
作者: 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
- def Xx(x,y):
- if y>=0:
- if x>=0:
- print(1)
- else:
- print(2)
- else:
- if x<0:
- print(3)
- else:
- print(4)
- x=int(input('输入X'))
- y=int(input('输入y'))
- num = Xx(x,y)
- 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
方法一:- x=eval(input('please enter the abscissa'))
- y=eval(input('please enter the ordinate'))
- if x>0:
- if y>0:
- print('First quadrant')
- elif y<0:
- print('Fourth quadrant')
- else:
- print('The number is in active abscissa')
- elif x<0:
- if y>0:
- print('Second quadrant')
- elif y<0:
- print('Third quadrant')
- else:
- print('The number is in negative abscissa')
- else:
- if y>0:
- print('The number is in active ordinate')
- elif y<0:
- print('The number is in negative ordinate')
- else:
- print('The center is waiting for you!!!')
复制代码
作者: 司南 时间: 2018-4-6 10:58
这是看了看大家的代码,得到的灵感,还可以练练函数~- def quadrant(x,y):
- if x>0:
- if y>0:
- print('First quadrant')
- elif y<0:
- print('Fourth quadrant')
- else:
- print('The number is in active abscissa')
- elif x<0:
- if y>0:
- print('Second quadrant')
- elif y<0:
- print('Third quadrant')
- else:
- print('The number is in negative abscissa')
- else:
- if y>0:
- print('The number is in active ordinate')
- elif y<0:
- print('The number is in negative ordinate')
- else:
- print('The center is waiting for you!!!')
- x=eval(input('please enter the abscissa'))
- y=eval(input('please enter the ordinate'))
- quadrant(x,y)
复制代码
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) |
Powered by Discuz! X2.5 |