Python 2.7-无效的文字错误
Python版本-2.7.11 我正在跟随Zed Shaw的《艰苦学习Python》,目前在 我试图修改代码,以便脚本提示用户输入值(年龄、身高等),而不是硬编码 在其他一切保持不变的情况下,我修改了这一行:Python 2.7-无效的文字错误,python,python-2.7,Python,Python 2.7,Python版本-2.7.11 我正在跟随Zed Shaw的《艰苦学习Python》,目前在 我试图修改代码,以便脚本提示用户输入值(年龄、身高等),而不是硬编码 在其他一切保持不变的情况下,我修改了这一行: age = add(float(raw_input('Enter 2 numbers'))) ..并输入了两个数字(5,1),导致以下错误:- ValueError:浮点()的文本无效:5,2 我用int(raw\u input())替换了float(raw\u input()),这导致
age = add(float(raw_input('Enter 2 numbers')))
..并输入了两个数字(5,1)
,导致以下错误:-
ValueError:浮点()的文本无效:5,2
我用int(raw\u input())
替换了float(raw\u input())
,这导致了以下错误
ValueError:基数为10的int()的文本无效:“5,1”
有人能告诉我哪里出了问题吗?我想你可能是有意要拆分这些值的
nums = map(float, raw_input('Enter 2 numbers').split(','))
age = add(*nums)
将应用一个函数,在本例中是跨项集合应用的,项集合是一个字符串列表
*nums
是的一些变体。它接受一组项,并将它们“扩展”为函数所需的参数
或者,这也可以,但它只是更容易打字
age = add(nums[0], nums[1])
我想你可能想把价值分成两半
nums = map(float, raw_input('Enter 2 numbers').split(','))
age = add(*nums)
将应用一个函数,在本例中是跨项集合应用的,项集合是一个字符串列表
*nums
是的一些变体。它接受一组项,并将它们“扩展”为函数所需的参数
或者,这也可以,但它只是更容易打字
age = add(nums[0], nums[1])
在将输入值转换为浮点值之前,需要将输入值拆分为两个数字;使用:
我添加了一个
while True
循环,以便在出现错误时不断请求正确的输入;如果float()
无法转换值,或者输入不足或过多,则引发ValueError
异常。如果转换成功,并且正好有两个值要分配给age1
和age2
,则不会引发异常,并且break
语句退出无止境循环。有关此操作的详细信息,请参阅。在将输入值转换为浮点值之前,您需要将输入值拆分为两个数字;使用:
我添加了一个while True
循环,以便在出现错误时不断请求正确的输入;如果float()
无法转换值,或者输入不足或过多,则引发ValueError
异常。如果转换成功,并且正好有两个值要分配给age1
和age2
,则不会引发异常,并且break
语句退出无止境循环。请参阅以获取有关此操作的更多详细信息。尝试此操作
age1,age2=(float(x) for x in raw_input('Age_1, Age_2: ').split(','))
print add(age1,age2)
.split(n)
将通过在每个索引n处拆分字符串,从字符串创建一个列表。代码与以下代码相同:
n = raw_input('Age_1, Age_2')
n = n.split(',')
age1 = float(n[0])
age2 = float(n[1])
print add(age1, age2)
试试这个
age1,age2=(float(x) for x in raw_input('Age_1, Age_2: ').split(','))
print add(age1,age2)
.split(n)
将通过在每个索引n处拆分字符串,从字符串创建一个列表。代码与以下代码相同:
n = raw_input('Age_1, Age_2')
n = n.split(',')
age1 = float(n[0])
age2 = float(n[1])
print add(age1, age2)
如果您希望用户输入多个值,则需要更改代码。原始输入()只能解包一个值 例如,您不能输入元组并让raw_input()将其解压缩
>>> a, b = raw_input('enter two numbers: ')
>>> enter two numbers: 69, 420
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
.分割法非常方便。查看python wikibooks以获得字符串方法的概述和示例
如果希望用户输入多个值,则需要更改代码。原始输入()只能解包一个值 例如,您不能输入元组并让raw_input()将其解压缩
>>> a, b = raw_input('enter two numbers: ')
>>> enter two numbers: 69, 420
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
.分割法非常方便。查看python wikibooks以获得字符串方法的概述和示例
缺少到float/int的转换,也没有迹象表明OP的add()函数接受一个listI用于拆分,并导致以下错误
TypeError:int()参数必须是字符串或数字,而不是有意义的“list”
。我的孩子你能在你的回答中添加一个关于map()
和*nums
做什么的解释吗?我知道这里的大多数访问者只是复制和粘贴,但对于那些试图理解他们复制的内容的少数人来说,这会很有帮助。确切地说,我还没有遇到术语map()
和nums
,所以关于它们的一些信息将非常有用。缺少对float/int的转换,也没有迹象表明OP的add()函数接受用于拆分的列表,并导致以下错误TypeError:int()参数必须是字符串或数字,而不是有意义的“list”
。我的孩子你能在你的回答中添加一个关于map()
和*nums
做什么的解释吗?我知道这里的大多数访问者只是复制和粘贴,但对于那些试图理解他们复制的内容的少数人来说,这会很有帮助。确切地说,我还没有遇到术语map()
和nums
,所以关于它们的一些信息将非常有用。谢谢-但是当下面的代码试图运行print时“年龄:%d,身高:%d,体重:%d,智商:%d”%(年龄,身高,体重,智商)
它抛出错误TypeError:%d格式:需要一个数字,而不是str
@pb\ng:这不是由此答案中的代码引起的,因为循环不能以age1
或age2
设置为字符串结束。@pb\ng:age、height
、weight
或i的至少一个值q
是一个字符串,不是整数或浮点数。您必须在代码中修复它。谢谢-但是当下面的代码尝试运行时,打印“年龄:%d,身高:%d,体重:%d,智商:%d”%(年龄,身高,体重,智商)
它抛出错误TypeError:%d格式:需要一个数字,而不是str
@pb\ng:这不是由此答案中的代码引起的,因为循环不能以age1
或age2
设置为字符串结束。@pb\ng:至少有一个