Python 在简单代码和can';我不知道为什么
我是编程新手,我正在尝试制作我的第一个程序,但是我遇到了错误,我不知道为什么。它应该将速度从每小时英里转换为每小时公里Python 在简单代码和can';我不知道为什么,python,Python,我是编程新手,我正在尝试制作我的第一个程序,但是我遇到了错误,我不知道为什么。它应该将速度从每小时英里转换为每小时公里 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
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\speedconverter.py”,第5行,在
结果=str(单位*1.6)+“公里小时”
TypeError:无法将序列与类型为“float”的非整数相乘。您使用的是
单位
而不是值
。还要注意if
和输入的差异。还建议使用elif
:
unit = input(str("is your speed in mph or kmh? ")).lower()
value = float(input("what is your speed? "))
if unit == 'mph':
result = str(value * 1.6) + 'kmh'
elif unit == 'kmh':
result = str(value / 1.6) + 'mph'
print(result)
else:
pass
print(value, unit, "is equal to ", result)
您使用的是单位
而不是值
。还要注意if
和输入的差异。还建议使用elif
:
unit = input(str("is your speed in mph or kmh? ")).lower()
value = float(input("what is your speed? "))
if unit == 'mph':
result = str(value * 1.6) + 'kmh'
elif unit == 'kmh':
result = str(value / 1.6) + 'mph'
print(result)
else:
pass
print(value, unit, "is equal to ", result)
哦,那很简单。将“str”对象乘以“float”。仔细检查您的代码:
unit = input(str("is your speed in mph or kmh? ")).lower()
返回一个字符串
您要改为执行此操作:
if unit == 'mph':
result = str(value * 1.6) + 'kmh'
elif unit == 'kph':
result = str(value / 1.6) + 'mph'
else:
pass
你的意思可能是:
unit = str(input('Is your speed in mph or kmh?')).lower()
因为前一个版本是从字符串显式创建字符串的。还值得注意的是,按照惯例,对简单字符串使用'
编辑:要详细说明字符串乘法,让我们以以下示例为例:
foo = 'foo'
foo * 3 # multiplication by int produces foofoofoo
foo * 2.5 # multiplication by double produces error
在上面的示例中,我们知道将原始字符串乘以整数是有效的。为什么会这样?实际上,这很简单,只需让程序生成n
foo
。这很容易做到。就像这样做:
'foo' + 'foo' + 'foo'
您将注意到这里使用的加法运算符(受支持)
另一方面,假设我们尝试以下方法:
'a' * .5
程序应该做什么?我们要的是a字的一半。程序可以用多种方法解释这一点(例如,将a
的二进制或十六进制表示形式除以.5
),但没有明确的方法返回预期结果。相反,我们只是得到一个错误
我们可以通过显式地将float
转换为int
来绕过类型错误:
'a' * int(.5) # works and returns ''
注意这里我们得到了'
,因为int(.5)
是0
,这就是事情变得混乱的地方。许多人会认为int(.5)
是1
,如果您不知道该语言的隐含行为,这可能会导致意外行为
这一切都引出了一个非常重要的问题,这也是像str*float
这样的事情导致错误的原因:我们的行为更加含蓄(假设你的意思是int(float)
),可能会产生bug(在许多语言中都是这样),因此Python对你的行为非常明确。如果你想要一个int
,你必须要一个int
,这会产生更干净、更容易阅读(和理解)的代码。哦,这很简单。将“str”对象乘以“float”。仔细检查您的代码:
unit = input(str("is your speed in mph or kmh? ")).lower()
返回一个字符串
您要改为执行此操作:
if unit == 'mph':
result = str(value * 1.6) + 'kmh'
elif unit == 'kph':
result = str(value / 1.6) + 'mph'
else:
pass
你的意思可能是:
unit = str(input('Is your speed in mph or kmh?')).lower()
因为前一个版本是从字符串显式创建字符串的。还值得注意的是,按照惯例,对简单字符串使用'
编辑:要详细说明字符串乘法,让我们以以下示例为例:
foo = 'foo'
foo * 3 # multiplication by int produces foofoofoo
foo * 2.5 # multiplication by double produces error
在上面的示例中,我们知道将原始字符串乘以整数是有效的。为什么会这样?实际上,这很简单,只需让程序生成n
foo
。这很容易做到。就像这样做:
'foo' + 'foo' + 'foo'
您将注意到这里使用的加法运算符(受支持)
另一方面,假设我们尝试以下方法:
'a' * .5
程序应该做什么?我们要的是a字的一半。程序可以用多种方法解释这一点(例如,将a
的二进制或十六进制表示形式除以.5
),但没有明确的方法返回预期结果。相反,我们只是得到一个错误
我们可以通过显式地将float
转换为int
来绕过类型错误:
'a' * int(.5) # works and returns ''
注意这里我们得到了'
,因为int(.5)
是0
,这就是事情变得混乱的地方。许多人会认为int(.5)
是1
,如果您不知道该语言的隐含行为,这可能会导致意外行为
这一切都引出了一个非常重要的问题,这也是像str*float
这样的事情导致错误的原因:我们的行为更加含蓄(假设你的意思是int(float)
),可能会产生bug(在许多语言中都是这样),因此Python对你的行为非常明确。如果你想要一个int
,你必须要一个int
,这会产生更干净、更容易阅读(和理解)的代码。你会遇到什么错误?请记住,你应该详细说明你会遇到什么错误,以及错误发生在哪里。如果没有这些信息,我们将很难理解如何提供帮助。回溯(最近一次调用):文件“C:\Users\spenc\Desktop\Coding\speedconverter.py”,第5行,结果=str(单位*1.6)+'kmh'TypeError:不能将序列与'float'>>>类型的非整数相乘。您得到的错误是什么?请记住,您应该详细说明您得到的错误以及错误发生的位置。如果没有这些信息,我们将很难理解如何提供帮助。回溯(最近一次调用):文件“C:\Users\spenc\Desktop\Coding\speedconverter.py”,第5行,结果=str(单位*1.6)+'kmh'TypeError:不能将序列与'float'>>>类型的非整数相乘。您能解释一下为什么字符串不能与float相乘吗?“当我请求帮助时,我的老师很没用。”KennethDeTalente解释补充道。你能解释一下为什么字符串不能乘以浮点数吗?当我请求帮助时,我的老师毫无用处。@KennethDeTalen