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 小时前
SQLMesh Python 模型入门(三):前后置语句、蓝图建模与避坑指南
大数据·python·sqlmesh
Ramble_Naylor2 小时前
async/await:让一个线程同时等很多件事
开发语言·rust
ZealSinger2 小时前
Spring7 RestTemplate弃用迁移
java·spring·后端开发·restclient
迅猛龙办公室3 小时前
Python实现绘制同切圆
开发语言·python
朝朝辞暮i3 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
弹简特3 小时前
【Java项目-企悦抽】16-抽奖模块01-获取活动完整信息接口实现
java·开发语言·状态模式·springboot
言乐63 小时前
Python语音检索
开发语言·python·django·virtualenv·pygame
BD_Marathon4 小时前
多轮对话聊天机器人
开发语言·机器人·c#
泡茶喝茶写代码4 小时前
A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
Sarvartha4 小时前
接口基础知识
java·开发语言