繁体   English   中英

只接受小数点后一位的数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM