我有三个随机生成的浮点数,a,b和c:
a = np.random.uniform(-99.999, 99.999)
b = np.random.uniform(-99.999, 99.999)
c = np.random.uniform(-99.999, 99.999)
我想以以下格式返回它们:
1 2 3 4 5
123456789012345678901234567890123456789012345678901234567
#########################################################RULER
SOMETHING ELSE ~ ~ ~ ~ -XX.XXX -XX.XXX -XX.XXX
现在我需要一种检查方法:
因此,变量a,b和c的每个值都可以是(正数或负数)和(大于10或小于10),目标是始终将数字写到确切的相同位置(由空格调整)。>
到目前为止,这个问题。
我的python知识仍然很基础。我要做的可能会涉及50余行代码,包括...
if x >= 0 and x // 10 != 0: #check if x is larger than 0 and has two digits
if y >= 0 and y // 10 != 0: #check if y is larger than 0 and has two digits
...
但是必须有一个更优雅的解决方案,甚至是一个班轮。
答案 0 :(得分:2)
我将这个问题解释为“我想将每个浮点数转换为字符串,但是添加很多空格以使它们恰好长7个空格”。
您实际上不需要任何条件。 str.format方法可以将填充应用于值,而无需计算小数位或其他任何数字。
>>> a = 1.0
>>> b = -23.42
>>> c = 5.678
>>> result = "{: 7} {: 7} {: 7}".format(a,b,c)
>>> print(result)
1.0 -23.42 5.678
如果您想“好了,但我也希望数字精确显示小数点后的三位数字,即使它们为零,也可以”:
>>> "{:7.3f} {:7.3f} {:7.3f}".format(a,b,c)
' 1.000 -23.420 5.678'
如果您想“好了,但我也希望填充在符号的之后但在数字的之前”,那么您可以这样做:
>>> a = -1.0
>>> "{:=7.03f} {:=7.03f} {:=7.03f}".format(a,b,c)
'- 1.000 -23.420 5.678'
如果您想“可以,但是填充可以是零而不是空格吗?那么每个数字在小数点前都恰好有两位数字”,那么您可以这样做:
>>> "{:0= 7.03f} {:0= 7.03f} {:0= 7.03f}".format(a,b,c)
'-01.000 -23.420 05.678'
答案 1 :(得分:0)
这是组合三个if语句的一种方法。您可以将这个想法扩展到您的任务中
x, y, z = 12, 24, 16
if all(item > 0 and item // 10 != 0 for item in [x,y,z]):
print ("Condition matched")
else:
print ("Condition not matched")
# x, y, z = 12, 24, 16
# Condition matched
# x, y, z = 12, 24, 6
# Condition not matched