命令行Python逗号分隔的用户输入int值

命令行Python逗号分隔的用户输入int值,python,math,Python,Math,math.pow(base/exponent)需要逗号分隔的值…对于预先指定的值来说工作正常,但是对于用户提交的值有困难(在命令行中进行实验)。感谢您的帮助,因为我想发展这种东西,最终做一个基本的数学测试 exp = int(raw_input()) while exp: print math.pow(int(raw_input)) 我得到的错误是 ValueError:基数为10的int()的文本无效:“2,3”(这看起来很奇怪,因为这是一个指数,而不是日志函数…

math.pow(base/exponent)需要逗号分隔的值…对于预先指定的值来说工作正常,但是对于用户提交的值有困难(在命令行中进行实验)。感谢您的帮助,因为我想发展这种东西,最终做一个基本的数学测试

exp = int(raw_input()) 

    while exp:
        print math.pow(int(raw_input))
我得到的错误是

ValueError:基数为10的int()的文本无效:“2,3”(这看起来很奇怪,因为这是一个指数,而不是日志函数…)

当我尝试时:

exp = (raw_input()) 

while exp:
    print math.pow(exp)
我得到一个错误:

pow期望2个参数,得到1个

即使我提交的是2,3(用逗号)

我还尝试将输入与.split连接起来,但在pow要求整数而不是“list”时出现错误。

“2,3”
是一个字符串,将其传递给函数不会使其像两个不同的参数一样由
分隔(如您所料)

您应该首先将该字符串转换为两个数字,方法是先将其以逗号分隔,然后将int()应用于每个if项

>>> import math
>>> math.pow(*map(int, '2,3'.split(',')))
8.0
首先使用
str.split在“,”处拆分字符串:

>>> '2,3'.split(',')
['2', '3']               #str.split returns a list
现在,由于我们需要整数,所以对每个值应用
int()

>>> map(int, '2,3'.split(',')) #apply int() to each item of the list ['2', '3']
[2, 3]
现在,由于
pow
需要两个参数,所以您可以使用
*
符号来解压缩此列表并传递 将项目添加到
math.pow

>>> math.pow(*[2 , 3])
8.0
更简单的方法是使用序列解包:

>>> a, b = [2, 3]
>>> math.pow(a, b)
8.0
python库中还有一个工具可以将字符串中逗号分隔的项转换为元组:

>>> from ast import literal_eval
>>> literal_eval('1, 2')
(1, 2)
>>> a,b  = literal_eval('1, 2')
>>> a
1
>>> b
2
“2,3”
是一个字符串,将其传递给函数不会使其像两个不同的参数一样由
分隔(如您所料)

您应该首先将该字符串转换为两个数字,方法是先将其以逗号分隔,然后将int()应用于每个if项

>>> import math
>>> math.pow(*map(int, '2,3'.split(',')))
8.0
首先使用
str.split在“,”处拆分字符串:

>>> '2,3'.split(',')
['2', '3']               #str.split returns a list
现在,由于我们需要整数,所以对每个值应用
int()

>>> map(int, '2,3'.split(',')) #apply int() to each item of the list ['2', '3']
[2, 3]
现在,由于
pow
需要两个参数,所以您可以使用
*
符号来解压缩此列表并传递 将项目添加到
math.pow

>>> math.pow(*[2 , 3])
8.0
更简单的方法是使用序列解包:

>>> a, b = [2, 3]
>>> math.pow(a, b)
8.0
python库中还有一个工具可以将字符串中逗号分隔的项转换为元组:

>>> from ast import literal_eval
>>> literal_eval('1, 2')
(1, 2)
>>> a,b  = literal_eval('1, 2')
>>> a
1
>>> b
2

用逗号输入输入时,将得到一个元组。你可以使用

eval(raw_input())
或者只是

input()
将该字符串转换为可用格式。一旦有了元组,就可以使用*符号“解包”元组。因此,您将调用math.pow(2,3),而不是调用math.pow((2,3)),其中一个参数是元组(2,3)


用逗号输入输入时,将得到一个元组。你可以使用

eval(raw_input())
或者只是

input()
将该字符串转换为可用格式。一旦有了元组,就可以使用*符号“解包”元组。因此,您将调用math.pow(2,3),而不是调用math.pow((2,3)),其中一个参数是元组(2,3)


原始输入返回一个字符串,使用将其转换为int,那么
int()
(您需要先
split()
它)原始输入返回一个字符串,使用将其转换为int,那么
int()
(您需要先
split()
它)考虑到这个问题,接下来的操作不是有点多吗?谢谢Ashwini,我将重新访问分割函数。考虑到这个问题,OP接下来会不会有点太多?谢谢Ashwini,我将重新访问分割函数。