基于客户编号分配楼栋与楼层的Python程序问题求助
客户编号分配楼栋与楼层的程序问题解答
嗨!我来帮你看看哪里出问题啦~作为刚学Python的11年级学生,你已经迈出了很棒的一步,咱们一点点梳理:
你的代码里的错误点
你写的这两行计算有问题:
X = (Customer - 1 % 5) Y = (Customer // 5)
- 运算符优先级问题:Python里
%的优先级比-高,所以1 % 5会先计算,结果是1,那X就变成了Customer - 1,这显然不是正确的楼层计算逻辑。比如客户编号6,按规则应该是楼层0,但你的代码会算出X=5,这就错了。 - 楼栋计算的小偏差:
Y = Customer //5对于客户编号1来说,1//5=0是对的,但如果是客户编号5,5//5=1,转成字符会是B,但实际上客户编号5应该属于A栋楼层4,这里就出错啦。
正确的解法
根据题目要求,我们只需要调整计算逻辑,用对算术运算和类型转换就可以:
# 获取客户编号 customer_num = int(input("Customer number : ")) # 计算楼层:(编号-1)取余5,得到0-4的楼层号 floor = (customer_num - 1) % 5 # 计算楼栋:(编号-1)整除5,得到0-9的索引,再加65转成ASCII字符 block = chr(((customer_num - 1) // 5) + 65) # 输出结果 print(f"\n\nYour Block Will Be: {block}") print(f"Your Floor Will Be: {floor}")
验证示例
- 客户编号1:
(1-1)%5=0,(1-1)//5=0→chr(0+65)=A,对应*[楼栋A 楼层0]*,正确。 - 客户编号3:
(3-1)%5=2,(3-1)//5=0→A,对应*[楼栋A 楼层2]*,正确。 - 客户编号7:
(7-1)%5=1,(7-1)//5=1→chr(1+65)=B,对应*[楼栋B 楼层1]*,正确。 - 客户编号5:
(5-1)%5=4,(5-1)//5=0→A,对应*[楼栋A 楼层4]*,正确。
这样就完全符合题目要求啦,而且只用了算术运算和类型转换,没有用if-else~
内容的提问来源于stack exchange,提问作者Kavya Kinjalk
相关产品推荐
相关产品推荐

