Python 2.7-无效的文字错误

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()),这导致

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())
,这导致了以下错误

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:至少有一个