initial commit
This commit is contained in:
commit
4a4033c393
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
7
.idea/discord.xml
Normal file
7
.idea/discord.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="ASK" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
17
.idea/highlightedFiles.xml
Normal file
17
.idea/highlightedFiles.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectTreeColorHighlighter">
|
||||
<files />
|
||||
<colors>
|
||||
<color id="1" value="#4f060d" name="Color 1" enabled="true" />
|
||||
<color id="2" value="#44220e" name="Color 2" enabled="true" />
|
||||
<color id="3" value="#3f371b" name="Color 3" enabled="true" />
|
||||
<color id="4" value="#162c16" name="Color 4" enabled="true" />
|
||||
<color id="5" value="#0f2f47" name="Color 5" enabled="true" />
|
||||
<color id="6" value="#171a34" name="Color 6" enabled="true" />
|
||||
<color id="7" value="#311333" name="Color 7" enabled="true" />
|
||||
<color id="8" value="#1e1e1e" name="Color 8" enabled="true" />
|
||||
</colors>
|
||||
<option name="marksForCollapsedHighlights" value="Dots" />
|
||||
</component>
|
||||
</project>
|
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
4
.idea/misc.xml
Normal file
4
.idea/misc.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
|
||||
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/resistors.iml" filepath="$PROJECT_DIR$/.idea/resistors.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
8
.idea/resistors.iml
Normal file
8
.idea/resistors.iml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
80
bands.json
Normal file
80
bands.json
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
"black":
|
||||
{
|
||||
"tolerance": 0,
|
||||
"band": 0,
|
||||
"multiplier": 1
|
||||
},
|
||||
"brown":
|
||||
{
|
||||
"tolerance": 1,
|
||||
"band": 1,
|
||||
"multiplier": 10
|
||||
},
|
||||
"red":
|
||||
{
|
||||
"tolerance": 2,
|
||||
"band": 2,
|
||||
"multiplier": 100
|
||||
},
|
||||
"orange":
|
||||
{
|
||||
"tolerance": 3,
|
||||
"band": 3,
|
||||
"multiplier": 1000
|
||||
},
|
||||
"yellow":
|
||||
{
|
||||
"tolerance": 4,
|
||||
"band": 4,
|
||||
"multiplier": 10000
|
||||
},
|
||||
"green":
|
||||
{
|
||||
"tolerance": 0.5,
|
||||
"band": 5,
|
||||
"multiplier": 100000
|
||||
},
|
||||
"blue":
|
||||
{
|
||||
"tolerance": 0.25,
|
||||
"band": 6,
|
||||
"multiplier": 1000000
|
||||
},
|
||||
"violet":
|
||||
{
|
||||
"tolerance": 0.1,
|
||||
"band": 7,
|
||||
"multiplier": 10000000
|
||||
},
|
||||
"grey":
|
||||
{
|
||||
"tolerance": 0.05,
|
||||
"band": 8,
|
||||
"multiplier": 100000000
|
||||
},
|
||||
"white":
|
||||
{
|
||||
"tolerance": 0,
|
||||
"band": 9,
|
||||
"multiplier": 1000000000
|
||||
},
|
||||
"gold":
|
||||
{
|
||||
"tolerance": 5,
|
||||
"band": "",
|
||||
"multiplier": 0.1
|
||||
},
|
||||
"silver":
|
||||
{
|
||||
"tolerance": 10,
|
||||
"band": "",
|
||||
"multiplier": 0.01
|
||||
},
|
||||
"empty":
|
||||
{
|
||||
"tolerance": 20,
|
||||
"band": "",
|
||||
"multiplier": 0
|
||||
}
|
||||
}
|
6
colours.py
Normal file
6
colours.py
Normal file
@ -0,0 +1,6 @@
|
||||
red = "\033[91m"
|
||||
green = "\033[92m"
|
||||
blue = "\033[94m"
|
||||
magenta = "\033[35m"
|
||||
cyan = "\033[96m"
|
||||
end = "\033[0m"
|
97
main.py
Normal file
97
main.py
Normal file
@ -0,0 +1,97 @@
|
||||
import json
|
||||
import colours as c
|
||||
|
||||
|
||||
def load_json(file_name):
|
||||
# Open a json file called file_name
|
||||
with open(file_name) as file:
|
||||
# Load the json file into a dictionary
|
||||
return json.load(file)
|
||||
|
||||
|
||||
def convert(value):
|
||||
if 1000 <= value < 1000000:
|
||||
# Kilo
|
||||
value = str(value / 1000) + " K"
|
||||
|
||||
elif 1000000 <= value < 1000000000:
|
||||
# Mega
|
||||
value = str(value / 1000000) + " M"
|
||||
|
||||
elif value >= 1000000000:
|
||||
# Giga
|
||||
value = str(value / 1000000000) + " G"
|
||||
|
||||
return value
|
||||
|
||||
|
||||
def input_colours(bands):
|
||||
colours = []
|
||||
while len(colours) < 5:
|
||||
# Calculate a suffix for the number i.e. 2nd or 3rd
|
||||
suffixes = ["", "st", "nd", "rd", "th", "th"]
|
||||
suffix = suffixes[len(colours) + 1]
|
||||
|
||||
# Ask the user to input the colour of the resistor band
|
||||
colour = input(f"{c.cyan}What is the colour of the "
|
||||
f"{c.blue}{len(colours) + 1}{suffix}{c.end} "
|
||||
f"{c.cyan}band? {c.end}").lower()
|
||||
|
||||
if colour in bands:
|
||||
# Only add the colour if it is valid
|
||||
colours.append(colour)
|
||||
|
||||
else:
|
||||
# Otherwise, print an error message
|
||||
print(f"{c.red}Error: This colour does not exist.{c.end}")
|
||||
|
||||
return colours
|
||||
|
||||
|
||||
def calc_resistor(colours, bands):
|
||||
# Set default values
|
||||
bands_value = ""
|
||||
multiplier = 1
|
||||
tolerance = 0
|
||||
|
||||
for i, colour in enumerate(colours):
|
||||
# Get the band
|
||||
if i < 3:
|
||||
bands_value += str(bands[colour]["band"])
|
||||
|
||||
elif i == 3:
|
||||
multiplier = bands[colour]["multiplier"]
|
||||
|
||||
elif i == 4:
|
||||
tolerance = bands[colour]["tolerance"]
|
||||
|
||||
resistor_value = int(bands_value) * multiplier
|
||||
return resistor_value, tolerance
|
||||
|
||||
|
||||
def main(file_name):
|
||||
# Print the welcome message
|
||||
print(f"{c.magenta}Resistor Calculator v0.1.0{c.end}")
|
||||
|
||||
# Load the band information from the json file
|
||||
bands = load_json(file_name)
|
||||
|
||||
# Get the colours of the resistor's bands from the user
|
||||
colours = input_colours(bands)
|
||||
|
||||
# Calculate the value and tolerance of the resistor
|
||||
resistor_value, tolerance = calc_resistor(colours, bands)
|
||||
|
||||
# Convert the value to a readable format
|
||||
converted_value = convert(resistor_value)
|
||||
|
||||
# Collect and create the final value
|
||||
final_value = f"{converted_value}Ω +/-{tolerance}%"
|
||||
|
||||
# Print the original colours entered and final value
|
||||
print(f"\n{c.blue}You have entered: {c.cyan}{', '.join(colours)}{c.end}"
|
||||
f"\n{c.blue}Your resistor is: {c.cyan}{final_value}{c.end}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main("bands.json")
|
Loading…
Reference in New Issue
Block a user