Merge branch 'main' of https://gogs.gtsplab.com:5432/SVIG/python-bootcamp
This commit is contained in:
Vendored
+7
@@ -7,6 +7,13 @@
|
|||||||
"program": "simulation/SimulationRunner.py",
|
"program": "simulation/SimulationRunner.py",
|
||||||
"justMyCode": true,
|
"justMyCode": true,
|
||||||
"args": "./HotdogSimulation.py"
|
"args": "./HotdogSimulation.py"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Python: File",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"justMyCode": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Question 7:
|
||||||
|
# 1. Strings in Python are sequences of Unicode characters, while bytes
|
||||||
|
# are sequences of raw binary data.
|
||||||
|
# 2. Strings in Python are immutable, bytes objects are mutable
|
||||||
|
# 3. Strings in Python are encoded using a specific character encoding,
|
||||||
|
# bytes objects do not have an inherent encoding and represent raw binary
|
||||||
|
# data.
|
||||||
|
import sys
|
||||||
|
|
||||||
|
string_example = "Hello"
|
||||||
|
bytes_example = b"Hello"
|
||||||
|
|
||||||
|
string_size = sys.getsizeof(string_example)
|
||||||
|
bytes_size = sys.getsizeof(bytes_example)
|
||||||
|
|
||||||
|
print("Size of string:", string_size)
|
||||||
|
print("Size of bytes:", bytes_size)
|
||||||
|
|
||||||
|
# Emojis are represented using Unicode characters, which require more
|
||||||
|
# bytes to store compared to ASCII characters. Therefore, if you have
|
||||||
|
# a string that contains emojis, its size will be larger than a string
|
||||||
|
# without emojis.
|
||||||
|
|
||||||
|
def print_string_as_numbers(input_string):
|
||||||
|
for char in input_string:
|
||||||
|
print(ord(char), end=' ')
|
||||||
|
|
||||||
|
# Example usage
|
||||||
|
input_string = "Hello, World!"
|
||||||
|
print_string_as_numbers(input_string)
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# 1. Why does ord("😀") give a different number than 0xf09f9880, which is what the hexdump of the same character yields?
|
||||||
|
#
|
||||||
|
# The ord() function returns the Unicode code point of a character as an integer, which is 128512 for the smiley face.
|
||||||
|
# However, the hexdump command, returns the UTF-8 encoding of character.
|
||||||
|
# The hexadecimal representation of 128512 is 0x1F600.
|
||||||
|
# The UTF-8 encoding of the "😀" character is represented by the sequence of bytes F0 9F 98 80 in hexadecimal.
|
||||||
|
# UTF-8 is one of the encoding schemes used to represent Unicode characters as binary data.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 8. Hypothetical Situation: If the dataframe is not formatted or cleaned, while the column storing the tomoto sales data isn't named exactly same as 'Tomato_Sales'
|
||||||
|
# It will raise a KeyError instead.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 9. The solution of the hypothetical situation from my question 8:
|
||||||
|
|
||||||
|
def read_tomato_sales(file_name):
|
||||||
|
data = pd.read_csv(file_name)
|
||||||
|
if not pd.api.types.is_numeric_dtype(data["Tomato_Sales"]):
|
||||||
|
raise TypeError("Tomato_Sales column should contain only numeric values")
|
||||||
|
total_sales = data.iloc[:, -1].sum() # This is the key
|
||||||
|
print(f"Total tomato sales: {total_sales}")
|
||||||
|
# read_tomato_sales("tomato_sales_error.csv")
|
||||||
|
|
||||||
|
|
||||||
|
# 10. Different human languages can use various character encodings such as UTF-8, UTF-16, or ASCII.
|
||||||
|
# While using bytes, you can work with raw data without worrying about specific encodings.
|
||||||
|
# This allows us to avoid encoding-related errors and ensures compatibility across different language texts.
|
||||||
|
|
||||||
|
def encode_decode_data():
|
||||||
|
print('-' * 20)
|
||||||
|
data = input("Enter a sentence using any language: ")
|
||||||
|
print('-' * 20)
|
||||||
|
print("The sentence you entered is: {}".format(data))
|
||||||
|
print('-' * 20)
|
||||||
|
encoded_data = data.encode('utf-8')
|
||||||
|
print("This sentence after encoded is: {}".format(encoded_data))
|
||||||
|
print('-' * 20)
|
||||||
|
byte_length = len(encoded_data)
|
||||||
|
print("The byte length of this sentence is: {}".format(byte_length))
|
||||||
|
print('-' * 20)
|
||||||
|
decoded_data = encoded_data.decode()
|
||||||
|
print("This sentence after decoded is: {}".format(decoded_data))
|
||||||
|
print('-' * 20)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run_function = 'function1'
|
||||||
|
|
||||||
|
if run_function == 'function1':
|
||||||
|
encode_decode_data()
|
||||||
|
elif run_function == 'function2':
|
||||||
|
read_tomato_sales(file_name)
|
||||||
|
|
||||||
|
|
||||||
|
# 2.5. REPL stands for Read-Eval-Print Loop.
|
||||||
|
# A REPL is an interactive programming environment that allows you to read input, evaluate expressions or statements, print output, and repeat the process.
|
||||||
|
# It provides a quick way to experiment with code, test small snippets, and get immediate feedback.
|
||||||
|
# The Python REPL allows you to interactively enter Python code and see the results immediately without needing to write a full script and execute it separately.
|
||||||
|
|
||||||
|
|
||||||
|
# 3. The '_' is a convention that holds the value of the last printed expression or the result of the last evaluated expression.
|
||||||
|
# The actual type of the "_" variable depends on the value assigned to it.
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user