如何在Python函数中用切片反转卡号最后四位数字?
解决Python切片反转卡号最后四位的问题
问题背景
你需要完成的任务:使用步长为-1的切片反转card_number最后四位数字的顺序,初始代码如下:
def verify_card_number(card_number): sum_of_odd_digits = 0 card_number_reversed = card_number[0:4:2:] print(card_number_reversed)
你尝试了以下代码但未得到正确结果:
def verify_card_number(card_number): sum_of_odd_digits = 0 card_number_reversed = card_number[-1:0:4:2:] print(card_number_reversed)
问题分析
你尝试的代码存在两个核心问题:
- 切片语法错误:Python的切片格式为
[起始索引:结束索引:步长],不允许出现多个冒号; - 索引与步长逻辑错误:没有正确定位到卡号的最后四位区间,步长设置也不符合需求。
正确实现方案
方案1:分步切片(先取最后四位,再反转)
先通过-4:的切片获取最后四位数字,再用步长为-1的切片反转顺序:
def verify_card_number(card_number): sum_of_odd_digits = 0 # 先截取最后四位,再反转 last_four_reversed = card_number[-4:][::-1] print(last_four_reversed)
方案2:一步到位的切片
直接设置起始索引为-1(卡号最后一位)、结束索引为-5(倒数第五位,切片不包含该位置)、步长为-1,这样会从最后一位往前取4个字符,自然实现反转:
def verify_card_number(card_number): sum_of_odd_digits = 0 # 直接切片获取反转后的最后四位 last_four_reversed = card_number[-1:-5:-1] print(last_four_reversed)
示例验证
假设card_number的值为"12345678",两种方案都会输出"8765",即原最后四位"5678"的反转结果。
内容的提问来源于stack exchange,提问作者Nerdbull
相关产品推荐
相关产品推荐

