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

Python实现:将非负输入序列合并为单个整数(排除终止符-1)

问题解决:排除终止符-1的输入拼接方案

你的问题核心是输入-1时,程序把这个终止符也加到了结果里,这是因为原代码的逻辑顺序错了——每次输入后直接就把内容加入序列,没有先判断是不是终止符。下面给你两种修改方案,顺便优化代码的安全性和简洁性:

方案一:最简安全版

直接处理输入的字符串,避免用eval(eval会执行输入的任意代码,有安全风险),逻辑上先判断再加入序列:

seq = []
while True:
    # 提示里直接说明终止规则,不用额外打印
    user_input = input('Type a number (enter -1 to stop): ')
    if user_input == '-1':
        break  # 遇到终止符就退出循环,不加入序列
    seq.append(user_input)

# 直接用字符串拼接方法,比循环打印更简洁
print(''.join(seq))

方案二:带输入验证版

如果要确保用户输入的是有效数字(防止输入字母、符号),可以加个验证步骤:

seq = []
while True:
    user_input = input('Type a number (enter -1 to stop): ')
    if user_input == '-1':
        break
    # 验证输入是否是正整数(如果需要支持负数,可以调整判断逻辑)
    if not user_input.isdigit():
        print('Invalid input! Please enter a number.')
        continue
    seq.append(user_input)

print(''.join(seq))

原代码问题分析

  1. 初始输入直接加入序列:一开始就把第一个x加入seq,如果用户一开始就输入-1,也会被加进去
  2. 循环内先输入再添加:循环里先执行x = eval(...),然后直接seq.append(x),所以输入-1的时候,已经被添加到序列里了,最后自然会被输出
  3. 使用eval不安全:eval会解析并执行输入的任意代码,比如用户输入恶意代码会有风险,直接处理字符串更稳妥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:33:27