首页 > 解决方案 > 在 Python 3 上使用 WHILE 测试十进制输入无法使其工作

问题描述

我是 Python 编程的新手,我正在测试一些我迄今为止学到的特性。我想创建一个程序来帮助我在早上打开收银台。我编写了一个将字符串内容分配给变量的脚本,因此它首先测试(使用 while 循环)用户是否键入了字母输入。如果是这样,它会告诉用户需要输入一个数值并再次调用输入,再次填充一个字符串值。如果不是字母输入,则退出此 while 循环。现在问题来了。我希望它要求用户继续输入数字(浮点)值,直到想要退出这个模块,然后总和显示在屏幕上。在这个 while 循环中,我放置了一条从字符串到浮点数的转换线,因此它可以对数字求和,而不仅仅是将它们作为字符串连接在一起。但是我可以' t 似乎使它工作。这是到目前为止的代码

`n = input('n = ')
na = 0.00
while n.isalpha():
    print('Valor inválido. Insira um valor numérico.')
    n = input('n = ')
while n.isdecimal():
        n = float(n)
        na += n
        print('Insira o próximo valor: ')
        print('Digite qualquer letra para sair')
        n = input('n = ')
print('A soma é {:.2f}'.format(na))`

但是,如果我输入 5.22,例如,它会退出程序而不显示任何错误:

    n = 5.22
A soma é 0.00

Process finished with exit code 0

我怎样才能让这个while循环按我想要的方式工作?

啊,当我在 n 变量上输入整数值时,它工作得很好。

n = 5
Insira o próximo valor: 
Digite qualquer letra para sair
n = 5
Insira o próximo valor: 
Digite qualquer letra para sair
n = 5
Insira o próximo valor: 
Digite qualquer letra para sair
n = 5
Insira o próximo valor: 
Digite qualquer letra para sair
n = 5
Insira o próximo valor: 
Digite qualquer letra para sair
n = m
A soma é 25.00

提前致谢!!

标签: pythondecimal

解决方案


isdigit() 检查字符串是否只有数字 0-9, . 你可以试试这个:

n.replace('.','',1).isdigit()

如何检查字符串是否为数字(浮点数)中的更多示例?


推荐阅读