【问题标题】:ValueError: invalid literal for int() with base 10: '1 2 3'ValueError: int() 以 10 为底的无效文字:'1 2 3'
【发布时间】:2020-12-20 03:32:11
【问题描述】:

我正在尝试制作一个程序,将所有内容汇总在一个空格分隔的列表中。到目前为止,这是我的代码:

n=int(input())
petals=[0]*n
for i in range(n):
    petals[i]=int(input())
total=0
for i in range(n):
    total+=petals[i]
print(total)

这在我一次输入一个数字时有效,但我希望能够输入1 2 3 并让它打印6
当我这样做时,我得到了错误:

ValueError: int() 以 10 为底的无效文字:'1 2 3'。

如何更改此程序以使用1 2 3

【问题讨论】:

  • 对我来说很好用,你在里面输入什么?编辑:我刚刚看到您输入的是“1 2 3”,同时您应该分别输入每个数字。
  • 此代码要求每个输入只有一个数字。你不能像以前那样一次性输入1 2 3
  • 不,但就像你是如何做到的那样有一行包含N个空格分隔的整数petals1…petalsN。

标签: python


【解决方案1】:

如果您想输入类似1 2 3 的内容,可以将字符串拆分为数字列表:

petals = input("Input numbers seperated by a space: ").strip().split()
total=0
for i in range(len(petals)):
    total+=int(petals[i])
print(total)

【讨论】:

    【解决方案2】:

    您似乎输入三个数字作为一个输入“1、2 和 3”,而不是三个单独的数字? “1”、“2”和“3”?

    还请注意,您可以使用 Python 的内置 sum() 函数更轻松地计算带有数字的列表中元素的总和。 所以与其写:

    total=0
    for i in range(n):
        total+=petals[i]
    

    你可以简单地写:

    total = sum(petals)
    

    【讨论】:

      【解决方案3】:

      结合@robbo 和@Shar 的答案,您可以将输入拆分为空格,转换为整数并打印:

      print(sum([int(x) for x in input("Input numbers separated by a space: ").strip().split()]))
      

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 1970-01-01
        • 1970-01-01
        • 2018-09-09
        • 2020-01-04
        • 2010-12-22
        • 2011-07-07
        • 2019-10-14
        相关资源
        最近更新 更多