Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在简单代码和can';我不知道为什么_Python - Fatal编程技术网

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