首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ex学校主题3 ex 9

ex学校主题3 ex 9
EN

Stack Overflow用户
提问于 2012-04-02 02:48:49
回答 2查看 359关注 0票数 0

我今天已经写了3篇关于pyschools.com练习的帖子,希望不会太多。无论如何,本练习要求我编写一个函数将时间转换为24小时格式。下面是一个例子:>>> time24hr('12:34am') '0034hr‘

我的函数,它在我的空闲状态下运行良好:

代码语言:javascript
复制
def time24hr(tstr):
    am_or_pm = tstr[-2:]
    first_numbers = tstr[0:2]
    last_numbers = tstr[3:5]
    if am_or_pm == "am":
        if first_numbers == '12':
            first_in_am12 = '00'
            return first_in_am12 + last_numbers + am_or_pm      
        else:
            return first_numbers + last_numbers + am_or_pm
    if am_or_pm == "pm":
        if first_numbers == '12':
            return first_numbers + last_numbers + am_or_pm
        elif int(first_numbers) > 9:
            ok = repr(int(first_numbers) + 12)
            return ok + last_numbers + am_or_pm
        elif int(first_numbers) <= 9:
            ok = repr(int(tstr[1]) + 12)
            return ok + last_numbers + am_or_pm

然而,在pyschools网站上,当我运行代码时,它给了我以下错误: ValueError: invalid mean for int() with base 10:'1:‘这是什么意思?

EN

回答 2

Stack Overflow用户

发布于 2012-04-02 02:58:58

实际上,您的代码是不正确的,并且您没有使用完整的测试用例进行测试。请考虑以下场景

代码语言:javascript
复制
>>> time24hr('2:34pm')

Traceback (most recent call last):
  File "<pyshell#855>", line 1, in <module>
    time24hr('2:34pm')
  File "<pyshell#849>", line 14, in time24hr
    elif int(first_numbers) > 9:
ValueError: invalid literal for int() with base 10: '2:'
>>> time24hr('2:34am')
'2:4aam'
>>> time24hr('0:34am')
'0:4aam'
>>> time24hr('12am')
'00mam'
>>> 

你会看到奇怪的结果

原因是,您假设输入的格式始终为HH:MMam|pm。您应该使您的代码灵活,以接受其他格式。

尝试使用split(':')而不是first_numbers = tstr[0:2]last_numbers = tstr[3:5]

票数 4
EN

Stack Overflow用户

发布于 2012-08-14 23:23:16

代码语言:javascript
复制
def time24hr(tstr):
    time=tstr.replace(':','')
    if 'am' in time:
        tim=int(time.replace('am',''))
    elif 'pm' in time:
        tim=int(time.replace('pm',''))
    mini=tim%100
    hour=tim//100
    if mini<10:
    mini='0'+str(mini)
    else:
        mini=str(mini)
    if 'am' in time:
        if hour<10:
            hour='0'+str(hour)
    elif hour==12:
        hour='0'+str(hour-12)
        time1=time.replace('am','')
        time1=str(hour)+str(mini)+'hr'
    elif 'pm' in time:
        if hour<12:
            hour=12+hour
        elif hour==12:
            hour=hour
    time1=time.replace('pm','')
    time1=str(hour)+str(mini)+'hr'
    return time1

它会在学校里发挥作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9967208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档