首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将空字符串输入转换为浮动

将空字符串输入转换为浮动
EN

Stack Overflow用户
提问于 2017-12-12 19:36:36
回答 3查看 17.9K关注 0票数 2

我编写了这样的代码,以找到用户输入的数字的算术平均值,但由于某种原因,程序最终无法将字符串转换为浮动。我该换什么?

代码语言:javascript
复制
print("I'm going to find the arithmetical mean! \n")
jnr = 0; sum = 0
negative = "-"
while True:
    x = input(f"Type in {jnr}. nr. (To end press Enter): ")
    if negative not in x:
        jnr += 1
    elif negative in x:
        pass
    elif x == "": break
    sum = sum + float(x)

print("Aritmethmetical mean for these numbers is: "+str(round(sum/(jnr-1), 2)))

我发现了他的错误:

追踪(最近一次调用):File "C:\Users\siims\Desktop\Koolitööd\individuaalne proge.py",第11行,sum = sum + float(x) ValueError:未能将字符串转换为浮点数

EN

回答 3

Stack Overflow用户

发布于 2017-12-12 19:49:38

正如我在评论中所说的,错误来自这样一个事实:当用户使用Enter时调用Enter会导致错误。在不更改所有内容的情况下修复代码的最简单方法是首先检查输入是否为""。这样,您就不会试图将空字符串转换为浮动。

代码语言:javascript
复制
print("I'm going to find the arithmetical mean! \n")
jnr = 0; 
sum = 0
negative = "-"
while True:
    x = input(f"Type in {jnr}. nr. (To end press Enter): ")

    if x == "":
        break
    elif negative not in x:
        jnr += 1
        sum = sum + float(x)


print("Aritmethmetical mean for these numbers is: "+str(round(sum/(jnr-1), 2)))
票数 3
EN

Stack Overflow用户

发布于 2017-12-12 19:59:17

您正在尝试将字符串转换为浮点数,但如果要将字符串用于此目的,则它是无效字符串。我会继续询问,直到用户给出正确的输入,如下所示:

代码语言:javascript
复制
def float_input(s):
    while True:
        try:
            x = input(s)
        except ValueError:
            print('Invalid input. Try again.')
        else:
            break
    return x

然后,代替input,在代码中使用float_input

票数 0
EN

Stack Overflow用户

发布于 2017-12-12 20:01:02

更新后的代码版本:

代码语言:javascript
复制
print("I'm going to find the arithmetical mean! \n")
jnr = 0; sum = 0
while True:
    x = int(input())
    if x>1:
        jnr += 1
    elif x<1:
        pass

    if x == 0:
        break
    sum += float(x)
    print(sum)



print("Aritmethmetical mean for these numbers is: {}".format(sum/jnr))

产出:

代码语言:javascript
复制
I'm going to find the arithmetical mean! 

9
9
9
9
9
0
Aritmethmetical mean for these numbers is: 9.0

Pythonic方式:

你可以通过以下方式发现:

代码语言:javascript
复制
print("I'm going to find the arithmetical mean! \n")
inp=[int(i) for i in input().split()]
print(sum(inp)/len(inp))

产出:

代码语言:javascript
复制
I'm going to find the arithmetical mean! 

9 9 9 9 9
9.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47780268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档