Python每日一题(6)

Python每日一题 2025.3.26

一、前期回顾

今天做了个题目,用的python的idle写的,用起来不是很舒服感觉。题目提交pta的话,总会出问题,显示的大意应该是非0返回值好像,感觉比较奇怪。我后面自定义了一个main()函数并return0之后,还是不行。另外python的输入输出对比c++来看,有一定区别的。c++做题,不论是一边循环一边输入,只需要将待输入值全部放进去就行,而python如果循环输入,只能一个一个回车敲,如果全部输入进去就会报错,不知道问题出现在哪里。另外还有输出问题,循环输出的话,每一个print()就会添加个回车,提交之后都不知道是否可行。python可能更倾向于将所有输入存储到列表里,然后对列表进行操作,分开来弄,输出也是,将所有输出存储到列表中,然后再对输出操作。而对于循环输入输出,可能会存在问题。

二、题目

回忆一下题目,是栈类型题目,一开始输入整数n,接下来输入n个整数,其中非零整数代表入栈,0代表出栈,如果出栈栈为空的话,则输出"EMPTY",最后输出完数据后,第二行再输出栈内剩余元素。注意输出格式。

三、自己源代码

自己用idle做的时候,用循环输入输出做的,感觉非常丑陋,一点没有pythonic的感觉。想通过' '.join(map(str,l))来控制输出格式,不知道哪里存在问题,报错了,我自己觉得应该没问题。感觉对idle使用不是很熟练,没有自动补全、显示等功能,还需要将对应函数名、类名记全。

python 复制代码
import sys
import pdb
n=int(input())
line=sys.stdin.readline()
l=list(map(int,line.strip().split()))
# pdb.set_trace()
#此时l存储了所有的输入输出
#接下来需要将对应数据分开存储。
#没有储存输入输出的实例,我这里就给出来吧
#输入:
# 12
# 1 2 3 0 0 -1 0 0 0 4 5 0
#输出
#3 2 -1 1 "EMPTY" 5
#4
#接下来遍历列表,然后再pop,
stack=[]
result1=[]
result2=[]
for i in l:
    if i:
        stack.append(i)
    elif not i and stack:
        result1.append(stack.pop())
    elif not i and not stack:
        result1.append("EMPTY")

if stack:
    result2.extend(stack)
print(' '.join(map(str,result1)))
print(' '.join(map(str,result2)))

输入输出:

从输入输出角度来看,最好还是用双列表来存储,之后再去整理,因为不知道用循环输入输出,在oj、pta等编译器中编译的情况是什么,如果可以正常运行的话,可以使用循环输入输出。我这里.join()写的没问题啊,为什么在idle中弄的时候会报错呢?

四、deepseek答案

python 复制代码
n = int(input())
ops = list(map(int, input().split()))
stack = []
output = []

for num in ops:
    if num != 0:
        stack.append(num)
    else:
        if not stack:
            output.append('"EMPTY"')
        else:
            output.append(str(stack.pop()))

# 输出第一行
print(' '.join(output))
# 输出第二行
print(' '.join(map(str, stack)) if stack else '')

输出结果

五、源代码与ai分析

逻辑上一样,但是相比我的则更加简洁,感觉不用多说什么。我一开始自己写的是循环输入输出,很C化的写法,但是在idle中,只能一个一个输出,输出也是一个跳着一个出,在C中没问题,但是在pta中我不确定,因为也是第一次传入题目。不过整体的输入输出还是建议按照上面的。

相关推荐
万才博客2 分钟前
【AI编程学习之Python】第一天:Python的介绍
python·学习·ai编程
余华余华8 分钟前
VSCODE npm: 因为在此系统上禁止运行脚本。有关详细信息,请参阅 ...
java·服务器·数据库·笔记·oracle
zru_96029 分钟前
java替换html中的标签
java·前端·html
三生暮雨渡瀟瀟17 分钟前
Python之函数
开发语言·python
茶本无香28 分钟前
flatMap 介绍及作用
java·flatmap
残轩33 分钟前
是时候考虑用uv管理你的python项目及依赖了
python·rust
独行soc35 分钟前
2025年渗透测试面试题总结-某快手-安全工程师(题目+回答)
网络·数据库·python·安全·面试·职场和发展·红蓝攻防
赴前尘39 分钟前
chromem-go + ollama + bge-m3 进行文档向量嵌入和查询
开发语言·数据库·golang
laopeng3011 小时前
Spring AI ToolCalling 扩展模型能力边界
java·人工智能·大模型·spring ai
海外住宅ip供应商-luck1 小时前
PHP如何搭建设置代理http并加密使用?
开发语言·http·php