学习 Python 的第一个月,所以放轻松。
我的代码有问题,我的程序是将测量值从米转换为英寸、英尺和英里。以英里为单位的答案大约有 9 位小数,所以我只想显示前 5 位。但我收到错误“无效的十进制文字”。
我在另一个程序中对圆的半径使用了类似的格式:
Pi = 3.14
r = float(input('What is the Radius of the Circle? '))
a = Pi * r * r
print(f" area = {a:.3f}")
效果很好。但这里:
measurement = float(input("What is Your Measurement?: "))
#First to inches / 1m = 39.37in
print(float(39.37)*measurement)
#Then to feet / 1m = 3.28084f
print(float(3.28084)*measurement)
#Then to miles / 1m = 0.00062137mi
print(float(0.00062137)*measurement:.4f)
运气不好。有什么想法吗?
错误发生是因为你试图在浮点文字上使用格式设置切片 (
.4f
),而不是使用
print
函数的输出。
以下是修复代码的方法:
measurement = float(input("What is Your Measurement?: "))
#First to inches / 1m = 39.37in
print(float(39.37)*measurement)
#Then to feet / 1m = 3.28084f
print(float(3.28084)*measurement)
#Then to miles / 1m = 0.00062137mi
print(f"{(float(0.00062137)*measurement):.4f}") # 将格式设置切片移动到 f 字符串内
通过将
(float(0.00062137)*measurement):.4f
包裹在 f 字符串中,你告诉 Python 对表达式的结果进行格式化,而不是对其本身进行格式化。
以下是一些额外的提示:
-
你不必在你的代码中反复使用
float()
。当你将一个浮点数乘以另一个数字时,结果将自动是一个浮点数。 - 你可以考虑为英里到米的转换比率创建一个变量,以使你的代码更易于阅读。
以下是代码的改进版本:
measurement = float(input("What is Your Measurement?: "))
# Conversions
meters_to_inches = 39.37
meters_to_feet = 3.28084
meters_to_miles = 0.00062137
# Calculations and output
print(f"{meters_to_inches * measurement:.2f} inches")
print(f"{meters_to_feet * measurement:.2f} feet")
print(f"{meters_to_miles * measurement:.4f} miles")
此代码更简洁、更易于阅读和理解。
标签:python,basic From: 78851654