Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3上使用WHILE测试十进制输入可以';我做不到_Python_Decimal - Fatal编程技术网

在Python3上使用WHILE测试十进制输入可以';我做不到

在Python3上使用WHILE测试十进制输入可以';我做不到,python,decimal,Python,Decimal,我是Python编程的新手,目前正在测试我学到的一些特性。我想创建一个程序,帮助我在早上打开收银台。我编写了一个脚本,将字符串内容分配给一个n变量,因此它首先测试(使用while循环)用户是否键入了字母输入。如果是这样,它会告诉用户需要键入一个数值并再次调用输入,以再次填充字符串值。如果不是字母输入,则退出while循环。现在问题来了。我想让它要求用户一直输入数字(浮点)值,直到有人想退出这个模块,然后总和显示在屏幕上。在这个while循环中,我放置了一个从string到float的转换行,因此

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

`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
提前谢谢

isdigit()检查字符串是否只有数字0-9。您可以尝试以下方法:

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

更多的例子在

非常感谢!这就成功了!:D