求助大佬关于f-string格式化字符串的问题
python吧
全部回复
仅看楼主
level 6
o0lijunyi0o 楼主
萌新才学习python,在做python题目时有这么个问题:
格式化输出商品的编号和单价——编写一段程序,实现对商品编号和单价的格式化输出。首先输入一些销售数据(商品号、商品名、单价);然后输入的商品信息中的商品号勇用6位输出,单价保留2位小数点,前面添加人民币符号。
题目要求输入参数效果如下:
000001 马克杯 ¥9.90
——————————分割线——————————
萌新编写的代码如下:
uinput = input("请输入编号:")
i_int = int(uinput)-1
i_str = str(i_int)
num = ["1","2","3","4","5"]
name = ["马克杯","矿泉水","钢笔","积木","纸巾"]
price = ["9.9","2.0","15.0","9.9","2.0"]
print(f"{num[i_int]:0>6}\t{name[i_int]}\t¥{price[i_int]:.2f}")
————————————————————————
不知道为什么总是在最后一行的{price[i_int]:.2f}这里出问题,求大佬指点一下。
2023年09月17日 13点09分 1
吧务
level 12
price = [9.9,2.0,15.0,9.9,2.0]
不要引号
2023年09月17日 13点09分 2
谢谢大佬,已经找出问题所在了[爱心]
2023年09月17日 15点09分
level 11
阿巴阿巴,格式化全忘了。不过你获取索引后要直接用整型的,不要再转字符串了。比如我要获取"马克杯",就这么写name[0],而不是name["0"][滑稽]
2023年09月17日 14点09分 3
谢谢大佬,已经找出问题所在了[爱心]
2023年09月17日 15点09分
level 6
o0lijunyi0o 楼主
刚刚找出问题原因,现分享一下心得。
新的代码:
uinput = input("请输入编号:")
i_int = int(uinput)-1
i_str = str(i_int)
num = ["1","2","3","4","5"]
name = ["马克杯","矿泉水","钢笔","积木","纸巾"]
price = ["9.9","2.0","15.0","9.9","2.0"]
print(f"{num[i_int]:0>6}\t{name[i_int]}\t¥{float(price[i_int]):.2f}")
————————————
将{price[i_int]:.2f},更改为了{float(price[i_int]):.2f},发现就能正常运行了。由此发现字符串格式化中,如果需要将参数a变为小数并进行处理,参数a必须为数值,不能是字符串。
即f"{a:.2f}"将参数a的变为保留2位小数的格式化字符串,参数a必须是整数或者浮点数,可以用int()或者float()处理参数a,就能正常运行了。
(2楼大佬提到的,将price列表中的元素全部为数值再使用也是解决办法之一)
2023年09月17日 15点09分 4
@o0lijunyi0o 可以输入时强转,也可以输入完成使用map完成转换或者使用推导式转换数据类型
2023年09月18日 05点09分
回复 o0lijunyi0o :好吧,我说的这个只是编码问题不影响功能,自己用的自己习惯就好,要是要分享给别人看还是需要稍稍有点规范
2023年09月18日 05点09分
有没有可能,价格这个数据元素用字符串就不合理?
2023年09月17日 18点09分
另外,只能num列表元素全是字符串[惊哭]
2023年09月17日 18点09分
1