尝试从字符串转换数字列表时出现错误“ int()的无效文字”

时间:2019-05-18 09:09:20

标签: python python-3.x

我正在执行此作业:

  

一种新的格斗游戏变得很流行。有N个恶棍   每个人都有一些力量。游戏中有N个玩家   每个都有一些能量。能量被用来杀死恶棍。的   坏蛋只有在玩家的能量大于   反派力量。

     

输入:

1
6
112 243 512 343 90 478
500 789 234 400 452 150
     

输出:

WIN

这是我的代码:

def main():
    T = int(input(''))
    for i in range(T):
        N = int(input(''))
        strength = []
        energy = []
        for i in range(N):
            strength.append(int(input()))
        for i in range(N):
            energy.append(int(input()))
        strength.sort()
        energy.sort()
        for j in range(len(energy)):
            if strength[i] < energy[i]:
                continue
            else:
                return print('LOSE')
        return print('WIN')

main()

但是我遇到了这个错误:

Traceback (most recent call last):
  File "CandidateCode.py", line 23, in 
    main()
  File "CandidateCode.py", line 11, in main
    strength.append(int(input('')))
ValueError: invalid literal for int() with base 10: '112 243 512 343 90 478 '

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以一个一个地输入每个数字,然后将每个数字强制转换为int。如果要一次输入所有数字,可以执行以下操作:

in = input()
numbers = list(map(int, in.split(' ')))

map函数将int()应用于列表的每个元素,该列表是通过用空格字符分割输入而获得的。然后,您必须将结果转换为list,就像在python-3中一样,map函数将返回一个迭代器。