如何按顺序将数字的每一位与列表中的元素相乘?
解决对应位置数字与列表元素相乘的问题
你遇到的问题核心是用了嵌套循环——外层循环遍历输入数字的每一位,内层循环又遍历整个列表,导致每个数字会和列表里的所有元素都相乘一遍,自然得不到“对应位置元素相乘”的结果。
这里有两种简单易懂的解决方案,都能得到你想要的输出:
方法1:使用zip()函数配对对应元素
zip()函数可以把两个可迭代对象的对应元素一一配对,正好匹配我们“每一位数字和列表对应位置元素相乘”的需求:
frequentNum = input("please enter 4 digit frequent number: ") arr = [4, 8, 5, 7] # 将输入字符串的每个字符转为整数,再和arr的元素一一配对 for digit, num in zip(map(int, frequentNum), arr): print(digit * num)
方法2:通过索引遍历对应位置
如果习惯用索引操作,也可以直接遍历列表的索引,取出输入数字对应位置的字符转成整数后相乘:
frequentNum = input("please enter 4 digit frequent number: ") arr = [4, 8, 5, 7] # 遍历0到3的索引(因为arr长度是4) for i in range(len(arr)): # 取出输入的第i位转成整数,和arr的第i个元素相乘 digit = int(frequentNum[i]) print(digit * arr[i])
验证输出
当你输入1234时,两种方法都会输出:
4 16 15 28
完全符合你的预期结果。
内容的提问来源于stack exchange,提问作者I_love_vegetables
相关产品推荐
相关产品推荐

