python - 如何使用 IF 语句编写两个变量函数
问题描述
我正在尝试编写一个两个变量方程来评估假设的速度和布尔运算符,如果为真,则将速度降低 5。根据速度和布尔运算符,等式应打印“无票”、“小票”或“大票”。
我首先尝试将其编写为 lambda 表达式,但发现 lambda 表达式必须是一行。然后我把它写成一个普通的表达式,只有一个 x 变量,它工作得很好。添加 Y 变量后,该函数停止工作。我不知道我是否定义了 x 错误,如果我不能像我正在尝试的那样做嵌套的 IF,或者这是否需要是两个函数。对此的任何帮助将不胜感激!:)
def caught_speeding(x,y):
if y == 1:
x = x - 5
else:
x = x
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
caught_speeding(100,0)
我没有收到任何错误消息。如果我设置 y = 1 它总是返回“小票”,如果我设置 y = 0 那么它不会返回任何东西。:/
解决方案
- 您不需要第一个 else 语句。这:
if y == 1:
x = x - 5
else:
x = x
等于:
if y == 1:
x = x - 5
- 看起来你有不正确的缩进。Python 严重依赖它,所以你应该经常检查你的代码缩进。而不是这个:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
你应该有这个:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
- 逻辑错误。在这里:
elif x > 60 or x <=80:
您检查 x>60 或 x<=80。这将永远是真的。替换or
为and
,这个 if 语句将有意义。
return
语句返回你在这个词之后写的值。但是print(...)
返回None
所以该行return print(...)
是无用的,因为它总是会返回None
s。Python函数不需要return
s,你可以只使用print
s。或者你可以只使用return
s 然后打印函数的结果。这取决于您的需求。
这是结果代码:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
print('No Ticket')
elif x > 60 and x <=80:
print('Small Ticket')
elif x >= 81:
print('Big Ticket')
caught_speeding(100,0)
Big Ticket
推荐阅读
- vue.js - v-for 循环遍历基于选择器的外部数组
- xcode - 从不同的 ViewController 访问信息
- excel - Excel 64 位 .xll 加载项安装静默失败
- spring-webflux - Spring WebFlux with MongoDB - 限制 SSE 客户端
- php - 尝试使用 typeahead.js 和 php 和 Ajax 获取 id 和 value
- python-3.x - 收到错误 ipykernel_launcher.py:错误:需要以下参数:-t//--template, -i//--images
- java - 在 SWT 小部件表中动态填充大量数据
- vue.js - 我需要从 vue js 中的数据中获取价值
- laravel - 获取 Laravel 中代码相同的相关产品
- scala - 在子类实例化中使用替代超类构造函数