【问题标题】:How can I handle numbers and strings in input()?如何处理 input() 中的数字和字符串?
【发布时间】:2020-07-09 02:17:38
【问题描述】:

我是 Python 新手,所以这对这里的许多人来说可能是一个愚蠢的问题。我正在创建一个读取数字的程序,直到用户数字“完成”。当用户数字“完成”时,程序将显示总数、计数和平均值。如果用户不插入数字,则程序必须显示错误消息。 我试着写代码:

while True:
try:
    numbers = input('Enter a number: ')
    if numbers == 'done':
        break

except:
    print ('bad data')

目前我还没有考虑总数、计数和平均值。我想了解如何在 input() 中处理“数字”和“字符串”。因为在我的代码中,错误是关于“除了”

【问题讨论】:

  • 运行代码时,如果可以的话,遇到什么错误?请edit您的问题添加您观察到的情况。这一次,我相信您发布的代码中可能存在格式问题
  • 完成检查后将其转换为整数

标签: python while-loop try-catch except


【解决方案1】:

谢谢你的问题。没有问题是愚蠢的。请检查下面的代码sn-p

【讨论】:

    【解决方案2】:

    如果您的字符串表示数字,则 String.isnumeric() 返回 true。这允许您过滤输入的数字。

    numbers = '123'
    numbers.isnumeric()
    -> returns true
    
    numbers = '123asd'
    numbers.isnumeric()
    -> returns false
    

    识别号码后,您可以使用

    将其转换为一个号码
    float(numbers) // is now of type float (if numbers represents in fact a float)
    

    【讨论】:

      【解决方案3】:

      这应该适合你。 input() 函数返回一个字符串,因此为了使用您的输入进行计算,您必须将它们转换为数字数据类型(如 int 或 float)。 如果您输入的内容无法转换为此数据类型,则 except 子句会捕获错误。

      sum = 0
      count = 0
      while True:
          numbers = input('Enter a number: ')
          if numbers == "done":
              break
      
          try:
              numbers = float(numbers)
              sum += numbers
              count += 1
          except:
              print("bad data, try again.")
      
      # print values after while-loop
      print()
      print("Total:", sum)
      print("You entered", count, "values.")
      print("Average:", sum/count)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 2010-11-06
        • 1970-01-01
        相关资源
        最近更新 更多