带有.split()的int列表中的语法错误

时间:2015-02-07 04:32:20

标签: python list python-3.x terminal

不确定为什么我似乎得到这个语法错误,当我在pycharm中运行代码时它工作得很好

我有:

import sys
import os.path
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

from DiceRolls import RandomDiceRoll

num = [int(n) for n in input("Enter Numbers: ").split(",")]
for n in num:
    print(RandomDiceRoll.diceRoll(n))

RandomDiceRoll就是这样做的:

import sys
import random

def diceRoll(n1):
    w = random.randint(1,n1)
    return w

现在,当我在pycharm中运行它时,效果很好,并打印出我想要的结果。

但是,如果我使用python scriptName.py从终端运行它,我会得到:

Enter Numbers: 4 0 0 
Traceback (most recent call last):
  File "userEnter.py", line 9, in <module>
    num = [int(n) for n in input("Enter Numbers: ").split(",")]
  File "<string>", line 1
    4 0 0 
      ^

我觉得我正在做一些我应该接受的事情,但我似乎无法找到它,任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

我正在使用python 2.7

代码看起来很好,我认为你输入了错误的输入,即没有,

代码:

num = [int(n) for n in raw_input("Enter Numbers: ").split(",")]

print "num:-", num

输出:

用户输入的值无效:

vivek@vivek:~/Desktop/stackoverflow$ python 5.py 
Enter Numbers: 4 0 0
Traceback (most recent call last):
  File "5.py", line 91, in <module>
    num = [int(n) for n in raw_input("Enter Numbers: ").split(",")]
ValueError: invalid literal for int() with base 10: '4 0 0'

用户输入的有效值:

vivek@vivek:~/Desktop/stackoverflow$ python 5.py 
Enter Numbers: 4, 0, 0
num:- [4, 0, 0]

答案 1 :(得分:1)

问题是您的命令行使用的是python2而不是python3。

您现在有两个选择

  • 使用python 3执行脚本,如python3 scriptName.py
  • 将代码转换为py2(错误替代),如num = [int(n) for n in raw_input("Enter Numbers: ").split(",")]

由于您尚未使用,分隔,因此您也可以将其删除并使用

答案 2 :(得分:0)

终端指向Python 2,更改为python 3并且它可以工作。