[英]mysql varchar(255) only storing numbers upto 4 decimal place , why?
[英]Only accept numbers with one decimal place
用户只能输入 1.0 到 4.0 之间的数字,并保留一位小数。
number = input() # 3.7 allowed
# 3.77 not allowed
此外,如果通过了 3.77,它应该再次尝试输入。
我尝试了什么:
while True:
number = float(input())
if number >= 1.0 and number <= 4.0:
break
number = round(number, 1)
我不想使用round(number, 1)
。
此外,我不允许导入除math
之外的任何模块。
在转换为float
之前更容易匹配字符串:
import re
while True:
s = input()
if re.match(r'^\d+(\.\d)?$', s):
number = float(s)
break
正则表达式的工作原理:
^
= 字符串开头
\d+
= 一位或多位数字
(\.\d)?
= 可选句点 + 一位数字
$
= 字符串结尾
您可以使用math
库。
import math
def Truncate(f, n):
return math.floor(f*10**n)/10**n
while True:
number = float(input())
if number == Truncate(number,1) and number >= 1.0 and number <= 4.0:
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.