You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码,精准打印输入中存在的具体违规数字?

问题

我编写了如下Python代码,用于检查输入内容是否包含数字:

def no_num():
    invalid_char = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
    while True:
        invalid_char_counter = 0
        user_input = input()
        for char in invalid_char:
            if char in user_input:
                invalid_char_counter = 1
        if invalid_char_counter == 0:
            print(f'Success: {user_input} has no numbers.')
        else:
            print(f'Error: {user_input} has a number detected. Number(s) detected:')
        
        
no_num()

目前代码仅能检测输入中是否存在数字,但我希望在错误提示的“Number(s) detected:”后,精准输出输入中存在的、属于invalid_char集合的具体数字。请问是否有简便的实现方法?

解决方案

直接收集输入中属于数字集合的字符即可,根据需求可以选择去重或保留重复项,以下是两种实现方式:

方式一:去重输出(推荐)

如果希望重复出现的数字只显示一次,用集合去重后排序输出:

def no_num():
    invalid_char = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
    while True:
        user_input = input()
        # 筛选输入中的数字字符
        detected_numbers = [char for char in user_input if char in invalid_char]
        # 去重并排序,让输出更整齐
        unique_numbers = sorted(list(set(detected_numbers)))
        if not detected_numbers:
            print(f'Success: {user_input} has no numbers.')
        else:
            print(f'Error: {user_input} has a number detected. Number(s) detected: {", ".join(unique_numbers)}')

no_num()

方式二:保留所有出现的数字

如果需要显示所有出现的数字(包括重复项),直接拼接即可:

def no_num():
    invalid_char = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}
    while True:
        user_input = input()
        detected_numbers = [char for char in user_input if char in invalid_char]
        if not detected_numbers:
            print(f'Success: {user_input} has no numbers.')
        else:
            print(f'Error: {user_input} has a number detected. Number(s) detected: {", ".join(detected_numbers)}')

no_num()

说明

  • 用列表推导式遍历输入字符,筛选出属于数字集合的元素,比原代码的循环判断更高效简洁
  • ", ".join()方法将数字列表拼接成字符串,输出格式更友好

内容的提问来源于stack exchange,提问作者CommercialGrape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:45:18