我正在制作一英里到公里/公里到英里的转换器,并且在运行时转换器会跳过.navbar-default .navbar-nav > li + li:before {
content: "";
display: inline-block;
vertical-align: middle;
border-left: 1px solid #ffffff;
height: 2.5em;
}
语句,即使条件似乎已满足,而是执行if
语句。 / p>
以下是代码:
else
任何帮助将不胜感激!
答案 0 :(得分:3)
学习使用调试器。 pdb
是一个简单的控制台调试器,但有很多GUI更容易使用。
首先,在脚本中启动调试器。
C:\>py -m pdb test.py
> c:\test.py(1)<module>()
-> """Converts mi to km."""
n
执行一行而不进入通话。我们将前进到第一个输入行:
(Pdb) n
> c:\test.py(2)<module>()
-> print("Welcome to the converter!")
(Pdb) n
Welcome to the converter!
> c:\test.py(3)<module>()
-> miorkm = input("Km to mi, or mi to km: ").lower
执行此行将提示miorkm
:
(Pdb) n
Km to mi, or mi to km: km
> c:\test.py(4)<module>()
-> val = input("How many Km or Mi: ")
检查刚刚输入的值:
(Pdb) miorkm
<built-in method lower of str object at 0x0000000002B65E68>
那不是"km"
!您已将str.lower
方法分配给变量。请使用.lower()
调用该方法。
但如果您没有注意到这一点,请继续:
(Pdb) n
How many Km or Mi: 10
> c:\test.py(7)<module>()
-> def converter(inpu2):
(Pdb) n
> c:\test.py(15)<module>()
-> print(converter(miorkm))
我们不希望n
执行整行。我们希望s
进入转换器函数:
(Pdb) s
--Call--
> c:\test.py(7)converter()
-> def converter(inpu2):
现在我们处于converter()
功能。寻找问题...
(Pdb) s
> c:\test.py(9)converter()
-> output = 0
(Pdb) s
> c:\test.py(10)converter()
-> if miorkm == "km":
(Pdb) s
> c:\test.py(13)converter()
-> output = int(val) * 1.609
这就错了! miorkm
应该是"km"
。检查一下:
(Pdb) miorkm
<built-in method lower of str object at 0x0000000002B65E68>
找到问题的更快方法是注意您始终转到else:
语句。将代码编辑为import pdb
,然后在if
pdb.set_trace()
之前设置断点:
import pdb
"""Converts mi to km."""
print("Welcome to the converter!")
miorkm = input("Km to mi, or mi to km: ").lower
val = input("How many Km or Mi: ")
def converter(inpu2):
"""Converts the value."""
output = 0
pdb.set_trace()
if miorkm == "km":
output = int(val) * 0.621
else:
output = int(val) * 1.609
return output
print(converter(miorkm))
输出:
Welcome to the converter!
Km to mi, or mi to km: km
How many Km or Mi: 10
> c:\users\metolone\desktop\test.py(12)converter()
-> if miorkm == "km":
点击断点后,检查miorkm
的值:
(Pdb)miorkm
最后一种方法......最简单的方法。在print
:
if
print('miorkm =',miorkm)
if(...)
输出:
Welcome to the converter!
Km to mi, or mi to km: km
How many Km or Mi: 10
miorkm = <built-in method lower of str object at 0x000000000226B1B8>
16.09
答案 1 :(得分:0)
.lower
应为.lower()
。它返回了一个函数!= 'km'
。