只接受一位小数的数字

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