我一直在使用一个名为“CSNewbies”的网站学习Python,其中一项任务是为用户创建一种方法来检查一个国家独立了多少天。这些国家仅限于斐济、萨摩亚和澳大利亚。
实际上,我为我所写的代码感到骄傲,因为它最终成功了。最后,我试着把它做得更好,在用户输入不同国家的情况下,使故障安全。但是,我想知道我的代码是否太多了。我写得太多了吗?
我觉得只有3个国家,这是相当大的代码。这是否可以改善呢?
更新--我在一个不同的论坛上问过这个问题,并被重定向到这里,但在论坛关闭之前,我得到了一个答复。我会在下面键入更好的代码,因为我有几行我不明白,如果有人可以帮忙。
我写的代码:
# 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()发布于 2022-06-26 18:56:37
删除您所有的评论。没有一个比阅读代码更明显的代码了。
strftime未使用,所以不要导入它。
考虑使用国名字典到独立日期,而不是使用单独的变量。
不要做三个单独的减法-只做一个。
您的“故障安全”是一个好主意,但您不应该反悔;循环。
不要在提示符中硬编码国家名称。用你的钥匙代替吧。
增加一个__main__守卫。
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()https://codereview.stackexchange.com/questions/277636
复制相似问题