首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查一个国家独立了多少天

检查一个国家独立了多少天
EN

Code Review用户
提问于 2022-06-26 16:50:05
回答 1查看 126关注 0票数 4

我一直在使用一个名为“CSNewbies”的网站学习Python,其中一项任务是为用户创建一种方法来检查一个国家独立了多少天。这些国家仅限于斐济、萨摩亚和澳大利亚。

实际上,我为我所写的代码感到骄傲,因为它最终成功了。最后,我试着把它做得更好,在用户输入不同国家的情况下,使故障安全。但是,我想知道我的代码是否太多了。我写得太多了吗?

我觉得只有3个国家,这是相当大的代码。这是否可以改善呢?

更新--我在一个不同的论坛上问过这个问题,并被重定向到这里,但在论坛关闭之前,我得到了一个答复。我会在下面键入更好的代码,因为我有几行我不明白,如果有人可以帮忙。

我写的代码:

代码语言:javascript
复制
# import necessary whatver
from time import strftime
from datetime import date

# set independence days of each country
fiji = date(1970,10,10)
samoa = date(1962,12,13)
australia = date(1901,1,1)

# get todays date
todays_date = date.today()

# get a difference from today and independence days
difffiji = todays_date - fiji
diffsamoa = todays_date - samaoa
diffaustralia = todays_date - australia

# independence checker
print('--Independence Checker--')

#create funct so i can call it at then end as a fail-safe and then it restarts the programme
def indcheck():
    count = input('Choose between Fiji, Samoa,Australia:').lower()
    if count == 'fiji':
        print(f'Fiji has been independent for {difffiji.days} days.')
    elif count == 'samoa':
        print(f'Samoa has been independent for {diffsamoa.days} days.')
    elif count == 'australia':
        print(f'Australia has been independent for {diffaustralia.days} days.')
    else:
        print('Please pick either Fiji, Samoa or Australia!')
        indcheck()


indcheck()
EN

回答 1

Code Review用户

发布于 2022-06-26 18:56:37

删除您所有的评论。没有一个比阅读代码更明显的代码了。

strftime未使用,所以不要导入它。

考虑使用国名字典到独立日期,而不是使用单独的变量。

不要做三个单独的减法-只做一个。

您的“故障安全”是一个好主意,但您不应该反悔;循环。

不要在提示符中硬编码国家名称。用你的钥匙代替吧。

增加一个__main__守卫。

建议

代码语言:javascript
复制
from datetime import date

INDEPENDENCE = {
    'Fiji': date(1970, 10, 10),
    'Samoa': date(1962, 12, 13),
    'Australia': date(1901, 1, 1),
}


def ind_check() -> None:
    print('--Independence Checker--')
    prompt = (
        'Choose between '
        + ', '.join(INDEPENDENCE.keys())
        + ': '
    )

    while True:
        country = input(prompt).title()
        independence = INDEPENDENCE.get(country)
        if independence:
            break

    age = date.today() - independence
    print(f'{country} has been independent for {age.days} days.')


if __name__ == '__main__':
    ind_check()
票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/277636

复制
相关文章

相似问题

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