刚开始编程,我正试着做我的第一个程序,但我有错误,我不知道为什么。它应该把速度从英里每小时转换成公里每小时
unit = input(str("is your speed in mph or kmh? ")).lower()
value = float(input("what is your speed? "))
if unit == 'mph':
result = str(unit * 1.6) + 'kmh'
if unit == 'kph':
result = str(unit / 1.6) + 'mph'
else:
pass
print(value, unit, "is equal to ", result)
回溯(最近一次呼叫): 文件“C:\Users\spenc\Desktop\Coding\速度转换器.py,第5行,在 结果=str(单位*1.6)+“kmh” TypeError:无法将序列与“float”类型的非int相乘
哦,那很简单。你要用一个“str”对象乘以一个“float”。再次检查您的代码:
返回字符串。你知道吗
您想这样做:
你的意思可能是:
因为前一个版本是从一个字符串显式创建一个字符串。同样值得注意的是,按照惯例,对简单字符串使用
' '
。你知道吗编辑:要详细说明字符串乘法,让我们举这个例子:
在上面的例子中,我们知道将原始字符串乘以整数是有效的。为什么会这样?这很简单,基本上就是让程序做
n
foo
,这很容易做到。就像这样:您将注意到这里使用了加法运算符(这是受支持的)。你知道吗
另一方面,让我们试试这个:
程序应该做什么?我们要的是字母a的一半。程序可以用许多方法解释这个问题(例如用
a
的二进制或十六进制表示除以.5
),但是没有明确的方法返回预期的结果。相反,我们只是得到一个错误。你知道吗我们可以通过显式地将
float
转换为int
来绕过类型错误:注意这里我们得到了
''
,因为int(.5)
是0
,这就是事情变得混乱的地方。很多人认为int(.5)
是1
,如果你没有意识到语言的隐含行为,这可能会导致意想不到的行为。你知道吗所有这些都引出了一个非常重要的问题,这也是像
str * float
这样的事情导致错误的原因:我们拥有的更隐含的行为(假设你的意思是int(float)
)可能会产生bug(在许多语言中都会产生bug),因此Python对你所做的事情非常explicit
。如果你想要一个int
,你必须要一个int
,这会产生更干净、更容易阅读(和理解)的代码。你知道吗您正在使用
unit
而不是value
。还要注意你的if
和input
的区别。还建议使用elif
:相关问题 更多 >
编程相关推荐