Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. def is_number(s):
  2. """
  3. Helper function: Check if a string represents a real number
  4. """
  5. try:
  6. float(s)
  7. return True
  8. except ValueError:
  9. return False
  10.  
  11.  
  12. def convert_degree(temp, units):
  13. """
  14. converts degrees from celsius to fahrenheit.
  15. :param temp: the temperature to convert.
  16. :param units: the units to convert from (should be "C" or "F")
  17. :return: The converted temperature. if the temp is below the absolute 0 the function returns none
  18. """
  19. if not is_number(temp):
  20. return None
  21. if temp < -273.15 and units == "C":
  22. return None
  23. elif temp < -459.67 and units == "F":
  24. return None
  25. elif units == "F":
  26. return (temp * 9 / 5) + 32
  27. elif units == "C":
  28. return (temp - 32) * (5 / 9)
  29. else:
  30. return None
  31.  
  32.  
  33. def natural_language_convert_degree(user_request):
  34. """
  35. converts the "user request" to the desire temperature
  36. :param user_request: user request should be in this format : convert to [celsius|fahrenheit] [degree]
  37. :return: The converted temperature. if the temp is below the absolute 0 the function returns none
  38. """
  39. ans = user_request.split()
  40. if len(ans) != 4:
  41. return None
  42. if not is_number(ans[3]):
  43. return None
  44. degree = float(ans[3])
  45. if ans[2] == "celsius" and degree > -273.15:
  46. return float(ans[3]), convert_degree(degree, "C")
  47. elif ans[2] == "fahrenheit" and degree > -459.67:
  48. return float(ans[3]), convert_degree(degree, "F")
  49. else:
  50. return None
  51.  
  52.  
  53. def user_input_convert_degree():
  54. """
  55. :return:
  56. """
  57.  
  58. maalot_str = input("Please enter degrees: ")
  59. if not is_number(maalot_str):
  60. return
  61. maalot = float(maalot_str)
  62. yehida = input("Convert to (C)elsius, or (F)ahrenheit: ")
  63. if yehida == "C":
  64. return maalot, "in Fahrenheit is ", convert_degree(maalot, yehida), "in Celsius"
  65. if yehida == "F":
  66. return maalot, "in Celsius is", convert_degree(maalot, yehida), "in Fahrenheit"
  67. else:
  68. return None
  69.  
  70.  
  71. # # fill code here. It is recommended to implement the function 'water_temp_to_state' and call it from here
  72. # # Convert water temperature to state of matter for user input.
  73. # def state_of_matter():
  74. def water_temp_to_state(temp):
  75. if temp < 0:
  76. return "Solid"
  77. if 0 <= temp <= 100:
  78. return "Liquid"
  79. if temp > 100:
  80. return "Gas"
  81. else:
  82. return
  83.  
  84.  
  85. def state_of_matter():
  86. """
  87. User inserts a number between 1 to 3, after this, the user will insert 3 degrees.
  88. :return:the output will be if the state of the numbers is in gas, liquid or solid for water.
  89. """
  90. threenums_str = input("Please enter a number of temperatures (1-3): ")
  91. if not is_number(threenums_str):
  92. return
  93. threenums = float(threenums_str)
  94. # if not 1 <= threenums <= 3:
  95. # return "The number you entered is not between 1 and 3, goodbye!"
  96. if threenums == 1:
  97. print("Please enter the temperatures, one in each line")
  98. deg1_str = input("")
  99. if not is_number(deg1_str): # Problem
  100. return
  101. deg1 = float(deg1_str)
  102. return water_temp_to_state(deg1)
  103. elif threenums == 2:
  104. print("Please enter the temperatures, one in each line")
  105. deg1_str = input("")
  106. deg2_str = input("")
  107. if not is_number(deg1_str):
  108. return
  109. if not is_number(deg2_str):
  110. return
  111. deg1 = float(deg1_str)
  112. deg2 = float(deg2_str)
  113. print(water_temp_to_state(deg1))
  114. print(water_temp_to_state(deg2))
  115. elif threenums == 3:
  116. print("Please enter the temperatures, one in each line")
  117. deg1_str = input("")
  118. deg2_str = input("")
  119. deg3_str = input("")
  120. if not is_number(deg1_str):
  121. return
  122. if not is_number(deg2_str):
  123. return
  124. if not is_number(deg3_str):
  125. return
  126. deg1 = float(deg1_str)
  127. deg2 = float(deg2_str)
  128. deg3 = float(deg3_str)
  129. print(water_temp_to_state(deg1))
  130. print(water_temp_to_state(deg2))
  131. print(water_temp_to_state(deg3))
  132. else:
  133. return "The number you entered is not between 1 and 3, goodbye!"
  134.  
  135. print(state_of_matter())
  136.  
  137. # Test
  138. # threenums_str = input("Please enter a number of temperatures (1-3): ")
  139. # if not is_number(threenums_str):
  140. # return None
  141. # threenums = float(threenums_str)
  142. # if threenums > 3 or threenums < 1:
  143. # return "The number you entered is not between 1 and 3, goodbye!"
  144. # if threenums == 1:
  145. # print("Please enter the temperatures, one in each line:)
  146. #
  147. # print("Please enter the temperatures, one in each line:")
  148. # deg1_str = (input(""))
  149. # deg2_str = (input(""))
  150. # deg3_str = (input(""))
  151. # if not is_number(deg1_str):
  152. # return None
  153. # if not is_number(deg2_str):
  154. # return None
  155. # if not is_number(deg3_str):
  156. # return None
  157. # if deg1_str == "":
  158. # return None
  159. # if deg2_str == "":
  160. # return None
  161. # if deg3_str == "":
  162. # return None
  163. # deg1 = float(deg1_str)
  164. # deg2 = float(deg2_str)
  165. # deg3 = float(deg3_str)
  166. # print(water_temp_to_state(deg1))
  167. # print(water_temp_to_state(deg2))
  168. # print(water_temp_to_state(deg3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement