只接受一位小数的数字
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
用户只能输入 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