Python中的.index()函数无法工作

-1 投票
2 回答
1638 浏览
提问于 2025-04-18 13:48

我正在完成一个学校的作业,内容是用Python编写一个程序,让用户输入一个日期,格式是日/月/年(dd/mm/yyyy),然后我需要把每个部分(日、月、年)分开,存到一个列表里。

date = input("Enter a date in the following format 'dd/mm/yyyy: "); 
date = date+'/'

    def split(date):
        dates = []
        i = 0
        while i < len(date):
            x = date.index('/', i)
            dates.append(date[i:x])
            i = x
        return dates

这是我用的代码。我在字符串'date'中查找字符'/',然后从'date'中提取一个子字符串,接着把它添加到列表dates里。

看起来我的.index()函数没有按我想的那样工作。是因为我不能把一个变量作为参数传给index函数吗?还是说有其他问题。

我知道问题出在index()函数上,因为当我在循环后打印x的值时,x的值并没有更新。

这是我排查问题后得到的输出:
i=0 x=2 dates = ['12']
i=2 x=2 dates = ['12','']

而且它还进入了一个无限循环。

如果有人能帮我解决这个问题,我会非常感激 :')

2 个回答

0

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况下,我们就会用到“事件”这个概念。

事件就像是一个信号,告诉程序某件事情发生了。比如,用户点击了鼠标、按下了键盘,或者页面加载完成等。程序会“监听”这些事件,一旦发生了,就会执行相应的代码。

为了让程序能够处理这些事件,我们通常会定义一些“事件处理器”。这就像是一个专门的助手,负责在事件发生时执行特定的任务。比如,当用户点击按钮时,事件处理器就会被触发,执行我们预先设定好的代码。

总之,事件和事件处理器是让程序与用户互动的重要部分。通过它们,我们可以让程序变得更加智能和灵活。

from datetime import datetime

def date_split(date_input):
    try:
        date_obj = datetime.strptime(date_input, "%d/%m/%Y") # This line with validate input
    except ValueError:
        print "Please verify input format and range : ", date_input
        return
    else:
        return [date_obj.day, date_obj.month, date_obj.year]

date = raw_input("Enter a date in the following format dd/mm/yyyy: ")
print date_split(str(date))
1

这是因为你的代码每次都在找到同一个实例。

i = x + 1

别忘了处理没有更多实例可以找到的情况。

撰写回答