如何编写程序实现任意位数整数按对应数字重复打印对应次数
编程问题实现方案
你现有的数字拆分逻辑存在两处问题:
- 赋值逻辑颠倒:每次循环中
num % 10得到的是当前最低位的数字,num // 10才是去掉最后一位后的新数值,你的原有代码把两者的赋值对象写反了 - 输出顺序不符:直接通过数值运算拆分得到的是从低位到高位的数字,和输入的顺序相反,输出前需要反转顺序,同时还要单独处理输入为0的边界情况,否则循环不会执行
下面给出两种可直接运行的实现:
方案1:基于数值运算的实现(匹配你原有的拆分思路)
# 读取输入转为整数 num = int(input()) digits = [] # 单独处理输入为0的特殊情况 if num == 0: digits.append(0) else: temp = num while temp > 0: # 取余数得到当前最后一位数字 digit = temp % 10 digits.append(digit) # 整除10去掉最后一位 temp = temp // 10 # 反转列表得到和输入顺序一致的数字位 digits = digits[::-1] # 逐位输出对应结果 for d in digits: print(f"{d}: {str(d)*d}")
方案2:基于字符串处理的实现(更简洁,无需处理顺序和边界问题)
# 直接读取输入为字符串,逐位遍历 num_str = input() for c in num_str: d = int(c) print(f"{d}: {c*d}")
效果验证
输入为6041时,两种方案的输出均为:
6: 666666
0:
4: 4444
1: 1
完全匹配需求要求的输出格式。
内容的提问来源于stack exchange,提问作者Mee
相关产品推荐
相关产品推荐

