首页 > 解决方案 > 尝试从字符串转换数字列表时出现错误“int() 的文字无效”

问题描述

我正在做这个任务:

一种新的格斗游戏已经流行起来。有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 '

我怎么解决这个问题?

标签: pythonpython-3.x

解决方案


您可以一个一个地输入每个数字并将每个数字转换为int。如果你想一次输入所有数字,你可以这样做:

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

map函数适用int()于列表的每个元素,该元素是通过用空白字符拆分输入来获得的。然后你必须将结果转换list为在 python-3 中的map函数返回一个迭代器。


推荐阅读