python经典百题之判断星期几

news/2024/11/28 5:50:17/

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母

程序分析

我们需要编写一个程序,接受用户输入的星期的第一个字母,然后判断是星期几。如果第一个字母一样,则继续判断第二个字母。

方法1: 使用字典

def get_weekday_first_letter(letter):weekdays = {'m': 'Monday','t': {'u': 'Tuesday', 'h': 'Thursday'},'w': 'Wednesday','f': 'Friday','s': {'a': 'Saturday', 'u': 'Sunday'}}if letter.lower() in weekdays:if isinstance(weekdays[letter.lower()], dict):second_letter = input("Enter the second letter: ").lower()return weekdays[letter.lower()][second_letter]else:return weekdays[letter.lower()]else:return "Invalid input"def main():first_letter = input("Enter the first letter of the weekday: ").lower()result = get_weekday_first_letter(first_letter)print("The day is:", result)if __name__ == "__main__":main()

解题思路:

  • 使用字典存储星期与对应的首字母,如果输入的首字母存在于字典中,则判断是否需要进一步输入第二个字母。

优点:

  • 实现简单,直观易懂。

缺点:

  • 只能处理首字母匹配的情况,不够灵活。

方法2: 使用多层if-elif-else

def get_weekday_first_letter(first_letter, second_letter=None):first_letter = first_letter.lower()if first_letter == 'm':return "Monday"elif first_letter == 't':if second_letter == 'u':return "Tuesday"elif second_letter == 'h':return "Thursday"elif first_letter == 'w':return "Wednesday"elif first_letter == 'f':return "Friday"elif first_letter == 's':if second_letter == 'a':return "Saturday"elif second_letter == 'u':return "Sunday"else:return "Invalid input"def main():first_letter = input("Enter the first letter of the weekday: ").lower()if first_letter == 't' or first_letter == 's':second_letter = input("Enter the second letter: ").lower()result = get_weekday_first_letter(first_letter, second_letter)else:result = get_weekday_first_letter(first_letter)print("The day is:", result)if __name__ == "__main__":main()

解题思路:

  • 使用多层if-elif-else语句根据第一个字母和可能的第二个字母进行判断。

优点:

  • 实现简单,逻辑清晰。

缺点:

  • 可能会导致代码嵌套层次较深,不够优雅。

方法3: 使用列表和索引

def get_weekday_first_letter(first_letter, second_letter=None):weekdays = ['Monday', ('Tuesday', 'Thursday'), 'Wednesday', 'Friday', ('Saturday', 'Sunday')]first_letter = first_letter.lower()index = ord(first_letter) - ord('a')if index >= 0 and index < len(weekdays):weekday = weekdays[index]if isinstance(weekday, tuple) and second_letter:second_letter = second_letter.lower()if second_letter == 'a':return weekday[0]elif second_letter == 'u':return weekday[1]elif not isinstance(weekday, tuple):return weekdayreturn "Invalid input"def main():first_letter = input("Enter the first letter of the weekday: ").lower()if first_letter == 't' or first_letter == 's':second_letter = input("Enter the second letter: ").lower()result = get_weekday_first_letter(first_letter, second_letter)else:result = get_weekday_first_letter(first_letter)print("The day is:", result)if __name__ == "__main__":main()

解题思路:

  • 使用列表存储星期与对应的首字母,根据输入的首字母找到对应的位置,再判断是否需要进一步输入第二个字母。

优点:

  • 使用了列表,避免了多层if-elif-else的嵌套。

缺点:

  • 需要进行字母到索引的转换,可能稍复杂。

方法总结及推荐

  • 推荐方法: 方法1使用字典,实现简单且直观。它可以灵活处理首字母匹配,且代码结构清晰。

  • 适用场景:

    • 对于这种首字母匹配的情况,推荐使用方法1。它简洁直观,易于维护。
    • 方法2也可用,但在字母匹配较多时,可能会导致代码嵌套过深,不够优雅。
    • 方法3使用了列表,避免了多层if-elif-else的嵌套,但需要进行字母到索引的转换,稍微复杂一些。

综上所述,方法1(使用字典)是最推荐的方法,简洁直观,易于理解和维护,适用于这种首字母匹配的情况。


http://www.ppmy.cn/news/1121433.html

相关文章

如何使用Selenium进行自动化测试

前言 对于很多刚入门的测试新手来说&#xff0c;大家都将自动化测试作为自己职业发展的一个主要阶段。可是&#xff0c;在成为一名合格的自动化测试工程师之前&#xff0c;我们不仅要掌握相应的理论知识&#xff0c;还要进行大量的实践&#xff0c;积累足够的经验&#xff0c;…

旅游行业怎么做微信营销?

让我们分析一下现在的旅游业市场&#xff0c;一方面用户的旅游需求越来越旺盛&#xff0c;而另一方面旅游从业者却都在抱怨市场越来越难搞&#xff0c;线下旅行社说&#xff1a;好惨&#xff0c;游客都跑线上大门户去订购了&#xff0c;我们只能吃剩下的&#xff0c;线上旅行社…

1794_ChibiOS网络书籍的介绍阅读

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 看到这个介绍我觉得这个OS的作者也是一个超级hack&#xff0c;而且非常有工匠精神。为什么要推出一个全新的RTOS呢&#xff0c;其实主要的原因就是觉…

C++Primer 第一章 开始

最近好像想的有点多&#xff0c;人也不知道该怎们办了&#xff0c;也不知道该怎么学。跟我们数据库老师还有前端老师交流了一下&#xff0c;感觉受益还是挺深的。需要慢慢整理一下现在状态&#xff0c;尽量有节奏的生活&#xff0c;学习。不急躁&#xff0c;不冒进。现在是大三…

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…

C语言入门Day_24 函数与指针

目录 前言&#xff1a; 1.指针和数组 2.函数和指针 3.易错点 4.思维导图 前言&#xff1a; 我们知道数组是用来存储多个数据的&#xff0c;以及我们可以用指针来指向一个变量。那么我们可以用指针来指向一个数组中的数据么&#xff1f; 指针除了可以像指向一个变量一样指…

重构Transformer神经网络:优化的自注意力机制和前馈神经网络

重构Transformer神经网络:优化的自注意力机制和前馈神经网络 原文代码网络结构推理代码训代码数据处理代码长词表辅助代码原文 标题:重构Transformer神经网络:优化的自注意力机制和前馈神经网络 摘要: 本论文研究了一种改进的Transformer神经网络模型,该模型使用区别于传统…

WPF控件模板2

在控件模板和为其提供支持的代码之间有一个隐含约定。如果使用自定义控件模板替代控件的标准模板&#xff0c;就需要确保新模板能够满足控件的实现代码的所有需要。 在简单控件中&#xff0c;这个过程就比较容易&#xff0c;因为对模板几乎没有&#xff08;或者完全没有&#…