【问题标题】:How to exit loop when input is nothing当输入什么都没有时如何退出循环
【发布时间】:2021-08-24 08:48:04
【问题描述】:

我正在尝试计算用户将输入的数字的平均值。如果用户没有输入任何内容(例如,根本没有值),我想计算用户在该点之前输入的所有数字的平均值。对这些输入求和并找到平均值效果很好,但是当用户没有输入任何内容时尝试打破循环时我会遇到值错误。对于我尝试过的 if 语句

if number == '' 第一次尝试没用,也试过if number == int("")

if len(number) == 0 这仅适用于字符串

if Value Error 抛出同样的错误

完整代码如下

sum = 0

while True :
    number = int(input('Please enter the number: '))
    sum += number
    if number == '' :
        break

print(sum//number)

我得到的错误是

number = int(input('请输入数字:')) ValueError: int() 以 10 为底的无效文字:>

非常感谢任何帮助!

编辑:现在越来越接近感谢建议,因为我可以克服没有值输入的问题,但我的平均值计算不成功。

尝试此代码计算正常,但我在移动到下一个输入之前将第一个输入添加了两次

total = 0

amount = 0

while True :
    user_input = input('Please enter the number: ')
    try:
        number = int(user_input)
        total = number + number
        amount += 1
    except:
        break
    total += number

print(total/amount)

现在我只想弄清楚如何从第二个输入而不是第一个输入开始添加。

【问题讨论】:

  • 欢迎您!尝试先定义输入:user_input = input('Your text'),然后再转换为:number = int(user_input)。在两者之间,我会添加 if 语句。
  • 附加说明:您正在使用变量名称覆盖内置函数sum。调用变量total 或类似的名称可能是一个更好的主意。
  • 作为旁注,不鼓励使用流行的内置函数作为变量名,即在这种情况下sum。建议改为sum_
  • 在 try 中使用 print 语句时是否出现错误,除了:czromXL

标签: python if-statement while-loop integer


【解决方案1】:
sum = 0

while True :
    number = input('Please enter the number: '))
    if number == '' :
        break
    sum += int(number)
print(sum//number)

这样试试

问题是使用 int() python 尝试将输入值转换为 int。因此,当它不是整数值时,python 无法转换它。所以它会引发错误。您也可以使用 Try catch with error 并进行中断。

【讨论】:

  • 谢谢!它有效,但我现在平均得到 calc erros。我已经更新了我的问题以适合
  • @RenaissanceMan 我认为,当您在第一次尝试中打破循环时会出现该错误。我的意思是当代码开始并询问输入时,你不输入数字,所以它会中断,然后你尝试获得平均值。这意味着您尝试除以 0。这就是错误显示的原因。
【解决方案2】:

您将始终以字符串形式获得输入,如果输入不是 int,则无法将其转换为 int。试试:

sum = 0

while True :
    number = input('Please enter the number: ')
    if number == '' :
        break
    sum += int(number)

print(sum//number)

【讨论】:

    【解决方案3】:

    所有答案都不起作用,因为 print 语句引用了一个字符串。

    sum = 0
    
    while True :
        user_input = input('Please enter the number: ')
        try:
            number = int(user_input)
        except:
            break
        sum += number
    
    print(sum//number)
    

    包含 user_input 将使用最后一个 int 作为除数。

    我的回答还确保输入字符串时脚本不会崩溃。

    【讨论】:

    • 谢谢!这确实有效,但我现在得到平均值的计算错误。我已经用新代码编辑并更新了我的问题
    【解决方案4】:

    用户必须总是输入一些东西(输入也是一个字符)才能结束,否则你将不得不给他一个时间限制。 您可以在看到它不是字符后将字符转换为 int 或 使用 try & except。

    sum = 0
    i = 0
    
    while True :
        try:
            number = int(input('Please enter the number: '))
        except ValueError:
            break
        i += 1
        sum += number
    try:
        print(sum/number)
    except NameError:
        print("User didn't input any number")
    

    如果您尝试将字符转换为 int,则会显示 ValueError。 因此,如果发生此错误,您可以中断循环。 此外,您正在尝试获得平均值。 因此,如果用户没有输入任何内容,您会得到 NameError,因此您可以打印错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多