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