发 帖  
原厂入驻New
[经验]

如何在Python中正确使用SwitchCase语句

2020-8-18 08:52:30  921 python
分享
0
  编程语言是一种功能强大的工具,它使程序员可以根据表达式或变量的结果完全控制程序的流程。开关条件特别用于在程序运行期间执行与表达式结果有关的不同代码块。那么如何在Python中正确使用SwitchCase语句?www.zpedu.com/it/rjyf如果结果是某个值,则程序将执行特定的过程;如果结果是另一个值,则程序将执行另一条过程,依此类推。
  首先向您展示switchcase语句如何在Java中起作用,以便您了解在Java中期望得到什么。Pythonswitchcase语句,尽管实现方式可能有所不同,但概念仍然相同。继续学习本教程您可以使用任何喜欢的PythonIDE或代码编辑器。
  Java切换案例演示如何在一年中的月份之间进行切换,以及在switch语句中找不到匹配项时提供默认结果。
  publicstaticvoidswitch_demo(String[]args){

  1. <p>  intmonth=7;</p>
  2. <p>  StringmonthString;</p>
  3. <p>  switch(month){</p>
  4. <p>  case1:monthString="January";</p>
  5. <p>  break;</p>
  6. <p>  case2:monthString="February";</p>
  7. <p>  break;</p>
  8. <p>  case3:monthString="March";</p>
  9. <p>  break;</p>
  10. <p>  case4:monthString="April";</p>
  11. <p>  break;</p>
  12. <p>  case5:monthString="May";</p>
  13. <p>  break;</p>
  14. <p>  case6:monthString="June";</p>
  15. <p>  break;</p>
  16. <p>  case7:monthString="July";</p>
  17. <p>  break;</p>
  18. <p>  case8:monthString="August";</p>
  19. <p>  break;</p>
  20. <p>  case9:monthString="September";</p>
  21. <p>  break;</p>
  22. <p>  case10:monthString="October";</p>
  23. <p>  break;</p>
  24. <p>  case11:monthString="November";</p>
  25. <p>  break;</p>
  26. <p>  case12:monthString="December";</p>
  27. <p>  break;</p>
  28. <p>  default:monthString="Invalidmonth";</p>
  29. <p>  break;</p>
  30. <p>  }</p>
  31. <p>  System.out.println(monthString);</p>
  32. <p>  }</p>
复制代码

  让我们分解上面的switchcase语句:
  步骤1:编译器首先为switch语句生成一个跳转表
  步骤2:switch语句仅对变量或表达式求值一次。
  步骤3:switch语句查看评估结果,并根据结果决定执行哪个代码块。
  ython开发人员GuidoVanRossum相信一种简单的编程语言可以绕开其他编程语言中发现的系统漏洞和障碍,因此他想创建一种具有更复杂的语法短语的简单语法。
  他从未想象过,如今,python编程语言可以成为设计科学机器学习应用程序的标准语言时需要使用的编程语言。
  在Python中切换案例
  Python没有内置的switch语句,就像您可以找到的编程语言一样取而代之的是,PHP和Java确实像Python程序员一样会使用if-else-if块,但是由于跳转表比if-else-if阶梯更有效,因此使用切换用例是有效的。
  这样做的原因是,它不是按顺序方式评估每个条件,而是查看评估的表达式或变量,然后直接跳转到要执行的代码的相关分支。
  使用if-else-if梯子进行切换,以查找圆柱体的表面积,文字区域和体积。
  defswitch():

  1. <p>  r=int(input("EnterRadius:"))</p>
  2. <p>  h=int(input("EnterHeight:"))</p>
  3. <p>  print("Press1forSuRFaceArea\npress2forLiteralArea\npress3forVolume\n")</p>
  4. <p>  option=int(input("youroption:"))ifoption==1:</p>
  5. <p>  result=2*3.17*r*(r+h)</p>
  6. <p>  print("\nSurfaceAreaOfCylinder=",result)elifoption==2:</p>
  7. <p>  result=2*3.17*r*h</p>
  8. <p>  print("LiteralAreaOfCylinder=",result)elifoption==3:</p>
  9. <p>  result=3.17*r*r*h</p>
  10. <p>  print("VolumeOfCylinder=",result)else:</p>
  11. <p>  print("Incorrectoption")</p>
  12. <p>  switch()</p>
复制代码

  说明:在以上示例中,如果选项为1,则计算圆柱体的表面积;如果选项为2,则计算圆柱体表面积,最后选择选项3,计算圆柱体的体积。
  使用类切换案例语句以将文字转换为字符串“month”
  classpythonSwitchStatement:

  1. <p>  defswitch(self,month):</p>
  2. <p>  default="Invalidmonth"</p>
  3. <p>  returngetattr(self,'case_'+str(month),lambda:default)()</p>
  4. <p>  defcase_1(self):</p>
  5. <p>  return"January"</p>
  6. <p>  defcase_2(self):</p>
  7. <p>  return"February"</p>
  8. <p>  defcase_3(self):</p>
  9. <p>  return"March"</p>
  10. <p>  defcase_4(self):</p>
  11. <p>  return"April"</p>
  12. <p>  defcase_5(self):</p>
  13. <p>  return"May"</p>
  14. <p>  defcase_6(self):</p>
  15. <p>  return"June"</p>
  16. <p>  defcase_7(self):</p>
  17. <p>  return"July"</p>
  18. <p>  defcase_8(self):</p>
  19. <p>  return"August"</p>
  20. <p>  defcase_9(self):</p>
  21. <p>  return"September"</p>
  22. <p>  defcase_10(self):</p>
  23. <p>  return"October"</p>
  24. <p>  defcase_11(self):</p>
  25. <p>  return"November"</p>
  26. <p>  defcase_12(self):</p>
  27. <p>  return"December"</p>
  28. <p>  s=PythonSwitchStatement()</p>
  29. <p>  print(s.switch(1))</p>
  30. <p>  print(s.switch(3))</p>
  31. <p>  print(s.switch(13))</p>
  32. <p>  Theoutputwillbe:</p>
  33. <p>  ___________________</p>
  34. <p>  January</p>
  35. <p>  March</p>
  36. <p>  Invalidmonth</p>
  37. <p>  ___________________</p>
复制代码

  说明:首先,创建一个名为PythonSwitchStatement定义一个switch()方法。它还针对特定的不同情况定义了其他功能。
  switch()方法采用参数'month'并将其转换为字符串,然后将其附加到大小写文字中,然后将其传递给getattr()方法,然后返回该类中可用的匹配函数。
  如果找不到匹配项,则getattr()方法将返回lambda函数作为默认值。
  字典映射替换
  #Functiontoconvertnumberintostring

  1. <p>  #Switcherisdictionarydatatypehere</p>
  2. <p>  defnumbers_to_strings(argument):</p>
  3. <p>  switcher={0:"zero",1:"one",2:"two",</p>
  4. <p>  }</p>
  5. <p>  #get()methodofdictionarydatatypereturns</p>
  6. <p>  #valueofpassedargumentifitispresent</p>
  7. <p>  #indictionaryotherwisethesecondargumentwill</p>
  8. <p>#beassignedasthedefaultvalueofthepassedargumentreturnswitcher.get(argument,"nothing")</p>
  9. <p>  #Driverprogramif__name__=="__main__":</p>
  10. <p>  argument=0</p>
  11. <p>  printnumbers_to_strings(argument)</p>
复制代码

  通过Switcher对功能使用字典映射的示例
  defone():

  1. <p>  return"January"</p>
  2. <p>  deftwo():</p>
  3. <p>  return"February"</p>
  4. <p>  defthree():</p>
  5. <p>  return"March"</p>
  6. <p>  deffour():</p>
  7. <p>  return"April"</p>
  8. <p>  deffive():</p>
  9. <p>  return"May"</p>
  10. <p>  defsix():</p>
  11. <p>  return"June"</p>
  12. <p>  defseven():</p>
  13. <p>  return"July"</p>
  14. <p>  defeight():</p>
  15. <p>  return"August"</p>
  16. <p>  defnine():</p>
  17. <p>  return"September"</p>
  18. <p>  deften():</p>
  19. <p>  return"October"</p>
  20. <p>  defeleven():</p>
  21. <p>  return"November"</p>
  22. <p>  deftwelve():</p>
  23. <p>  return"December"</p>
  24. <p>  defnumbers_to_months(argument):</p>
  25. <p>  switcher={</p>
  26. <p>  1:one,</p>
  27. <p>  2:two,</p>
  28. <p>  3:three,</p>
  29. <p>  4:four,</p>
  30. <p>  5:five,</p>
  31. <p>  6:six,</p>
  32. <p>  7:seven,</p>
  33. <p>  8:eight,</p>
  34. <p>  9:nine,</p>
  35. <p>  10:ten,</p>
  36. <p>  11:eleven,</p>
  37. <p>  12:twelve</p>
  38. <p>  }</p>
  39. <p>  #Getthefunctionfromswitcherdictionary</p>
  40. <p>  func=switcher.get(argument,lambda:"Invalidmonth")</p>
  41. <p>  #Executethefunction</p>
  42. <p>  printfunc()</p>
复制代码

  使用字典映射返回值的示例
  b={

  1. <p>  'a':122,</p>
  2. <p>  'b':123,</p>
  3. <p>  'c':124,</p>
  4. <p>  'd':125</p>
  5. <p>  }</p>
  6. <p>  #takeuserinput</p>
  7. <p>  inp=input('inputacharacter:')</p>
  8. <p>  #-1isthedefaultvalueiftherearenokeysthatmatchtheinput</p>
  9. <p>  print('Theresultforinpis:',b.get(inp,-1))</p>
  10. <p>  使用字典映射来切换星期几</p>
  11. <p>  defweek(i):</p>
  12. <p>  switcher={</p>
  13. <p>  0:'Sunday',</p>
  14. <p>  1:'Monday',</p>
  15. <p>  2:'Tuesday',</p>
  16. <p>  3:'Wednesday',</p>
  17. <p>  4:'Thursday',</p>
  18. <p>  5:'Friday',</p>
  19. <p>  6:'Saturday'</p>
  20. <p>  }</p>
  21. <p>  returnswitcher.get(i,"Invaliddayoftheweek")</p>
复制代码

  然后拨打week()使用不同的值来找出星期几。
  即week(2),输出将是星期二,week(4),输出将是星期四,而week(5.5)将输出“星期几无效”
  Python没有内置的switch-case构造,但是您可以使用字典映射代替switchcase。Python开发人员出于充分的理由没有包括switch-case结构。尽管许多程序员和开发人员一直在努力在Python中包含切换用例构造,但是无论是否考虑他们的建议,Python切换用例替代方案的效果都更好。

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表