即使不是真的,如果语句总是运行[关闭]

Posted

技术标签:

【中文标题】即使不是真的,如果语句总是运行[关闭]【英文标题】:If statement is always run even if not true [closed] 【发布时间】:2019-04-25 07:20:24 【问题描述】:

我想在系统使用超过 400 瓦时设置功率上限。我试图用一个简单的 if 语句来做到这一点,但是当当前功率为 256 瓦时,if 语句也会运行

我的代码是这样的

a=400

node1 = Node(0, 0, 0, 0)
node1.getPowerUsage()
node1.getGpuPowerUsage()
node1.getCpuPowerUsage()
node1.setPowercap()


if(node1.getCpuPowerUsage() > a):
    node1.setPowercap()

else:
    print("nothing to do")

node1.getCpuPowerUsage() 的输出如下所示

print node1.getCpuPowerUsage()
277.54

我希望在 400 瓦以下时看到这样的输出 nothing to do 但实际上我得到了这个输出 Current Power : 247 Watts

Enabled persistence mode for GPU 00000000:35:00.0.
Enabled persistence mode for GPU 00000000:5B:00.0.
Enabled persistence mode for GPU 00000000:CD:00.0.
Enabled persistence mode for GPU 00000000:AA:00.0.
All done.
Power limit for GPU 00000000:35:00.0 was set to 125.00 W from 250.00 W.
Power limit for GPU 00000000:5B:00.0 was set to 125.00 W from 250.00 W.
Power limit for GPU 00000000:CD:00.0 was set to 125.00 W from 250.00 W.
Power limit for GPU 00000000:AA:00.0 was set to 125.00 W from 250.00 W.
All done.
nothing to do

或者你有其他建议我该怎么做?

【问题讨论】:

如果该值确实是浮点值277.54,那么这应该可以正常工作。不能从这个示例代码中推断出问题。 查看print repr(node1.getCpuPowerUsage())实际 值。是字符串吗? 【参考方案1】:

将值转换为浮点数。

例如:

a=400

node1 = Node(0, 0, 0, 0)
node1.getPowerUsage()
node1.getGpuPowerUsage()
node1.getCpuPowerUsage()
node1.setPowercap()


if(float(node1.getCpuPowerUsage()) > a):
    node1.setPowercap()
else:
    print("nothing to do")

【讨论】:

有效,但我必须在 if 语句之前删除 node1.setPowercap()

以上是关于即使不是真的,如果语句总是运行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++ 程序真的比类似的 C 程序慢吗? [关闭]

MySQL 视图 - 使用或不使用 [关闭]

为啥检查字符串是不是为空的函数总是返回true? [关闭]

如果语句过早退出Bash脚本循环

c# 一个程序关闭,如果有前台线程还在运行,当前台线程运行完是不是会关闭?还是一直存在?

即使关闭防火墙后,传入请求也会被阻止