A program to allow the user to create a checklist - python

This is my coding so far
numofthings=int(input("How many things do you need to pack? "))
numoftasks=int(input("How many tasks do you need to complete to prepare? "))
checklist1=[]
end=' '
while end.lower()!='end':
item=input("Please enter the things you need to pack and type 'End' when you're done: ")
checklist1.append(item)
end=item
checklist2=[]
end=' '
while end.lower()!='end':
task=input("What tasks do you have to complete and type 'End' when you're done ")
checklist2.append(task)
end=task
print(checklist1)
print(checklist2)
How do I get the items they list saved into an array/list?
Also how do I make it so that they can only list the number of items that they said they had to pack?
I only started coding 2 weeks ago so sorry if it's obvious and I've overlooked it

How do I get the items they list saved into an array/list?
You're already doing that just fine: that's what you get with
checklist.append(item)
If you stick a simple reporting statement in your loop, you'll see that happening as you go:
checklist.append(item)
print(checklist)
Comment that line before you turn in the program.
I suspect that you need two separate check-lists, though: one each for packing and tasks.
How do I make it so that they can only list the number of items that
they said they had to pack?
Decide how you plan to decide when you have enough. Your current code looks for the trigger value "end". If you know how many times you have to iterate before you enter the loop, then use a for loop:
for i in range(num_of_things):
Does that get you moving?

Related

Creating a personal accounting program

I am new to python and may have been overly optimistic about the first project I want to tackle. I want to create a program that will help me allocate my checks(I have a banking app this is just for fun lol). I also want this to be a continuous program so it will check to see if there is a 'SavedData.txt' file and if there is it will present all the starting balances in 3 accounts from the last time it was used. Then continue to ask questions to allocate into said accounts from the new check. However, if the file doesn't exist I want it to create it, ask questions and then save the inputs to be called upon the next time it is run.
Here's what I have:
'If the file does not exist ask this prompt'
month = input("Please enter month: ")
day = input("Please enter the day: ")
year = input("Please enter the year: ")
initial_checking = int((input("What is your initial checking account balance?: ")))
initial_savings = int((input("What is your initial savings account balance?: ")))
initial_fun = int((input("What is your initial fun account balance?: ")))
current_check = int((input("What is your check amount?: ")))
save_cont = int(input("How much would you like to contribute to savings?: "))
fun_cont = int(input("How much would you like to contribute to fun account?: "))
current_check = int((current_check - save_cont) - fun_cont)
print("Remaining check balance is " + str(current_check) + ".")
def main():
while True:
q = input("Would you like to put the rest in checking?(Type Y/N): ")
if q in "yY":
global initial_checking
global initial_savings
global initial_fun
global current_check
initial_checking = int(initial_checking + current_check)
print("Your new checking balance is " + str(initial_checking))
return
elif q in "nN":
print("Error! You must contribute your entire check!")
else:
print("You must enter (y/n).")
return
main()
After this is where I start to have issues. If the file does exist, or if the program has been run before, I want it to read the last input and display "This is your current checking account balance: $" and so on and so forth. I then want the same contribution questions to be asked and added to the current balance amount for each respective account. Doing research I have seen when doing something like 'file1 = open("SavedData.txt", "a+") ' will open and append the file. My issue is figuring out how to set up running the check for the file, opening, reading it, adding to it, or creating it then writing, and saving it.
My apologies if there is redundant information or if it looks extremely sloppy as I said I am very very new and may have been overly optimistic about doing this project. I appreciate your time and responses.
As it is your first project I would suggest learning good design from the start. So try to plan out what you have to do first, what components will be needed and how will they interact (you can use sticky notes or whatever you like but have a plan before you start coding), as it will help you define classes/functions when you will be actually writing code.
So for now you nicely define the things you need to do, so do them one by one testing each step.
As of your question about file manipulation first start by writing function that opens a file and read it, as of now using with statement is good practice instead of manually opening and closing files, you can read more here and here.
Then try to write part of your code that defines what should be added to file (I'm not really sure how checks work so I can't help you here).
And when you know what you want to add create a function that will write to the file, it will be similar to reading so you can again refer to previously mentions links.
Finally if everything above is done you can try to enclose it in a loop that will constantly monitor the file. Probably the best approach would be to use already created library like watchdog but if you want to learn how filesystem works it is fine to create custom solution.
Last tip, try to avoid global variables ;P

giving string inputs and store them in a list without number limitation

im kinda noob in programming. i want to save my daily study topics in a list, my code has topic number limitation(in range(3)) but i don't understand how to do it without number limitation.Any suggestion?
topics = []
for todays_topic in range(3):
topics.append(input("inter here>> "))
print(topics)
I'm not sure about your question but I'm guessing that you want to add your todays_topic to your list continuosly until you want to stop. It is better to use while loop instead of for loop. Use while True and keep adding elements. Take a variable and ask whether you want to enter more. If yes then continue, if no, then break the loop. Your code:
topics=[]
while True:
todays_topic=input("Enter here>> ")
topics.append(todays_topic)
asc=input("Enter more?? Y/N: ")
if asc=="N"
break

Import and insert word in sequence in Python

I want to import and insert word in sequence and NOT RANDOMLY, each registration attempt uses a single username and stop until the registration is completed. Then logout and begin a new registration with the next username in the list if the REGISTRATION is FAILED, and skip if the REGISTRATION is SUCCEDED.
I'm really confused because I have no clue. I've tried this code but it chooses randomly and I have no idea how to use the "for loop"
import random
Copy = driver.find_element_by_xpath('XPATH')
Copy.click()
names = [
"Noah" ,"Liam" ,"William" ,"Anthony"
]
idx = random.randint(0, len(names) - 1)
print(f"Picked name: {names[idx]}")
Copy.send_keys(names[idx])
How can I make it choose the next word in sequence and NOT RANDOMLY
Any Help Please
I am going to assume that you are happy with what the code does, with exception that the names it picks are random. This narrows everything down to one line, and namely the one that picks names randomly:
idx = random.randint(0, len(names) - 1)
Simple enough, you want "the next word in sequence and NOT RANDOMLY":
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
If you take a look at the link I've provided, you can see that lists have a pop() method, returning and removing some element from the list. We want the first one so we will provide 0 as the argument for the pop method.
We modify the line to look something like this
name = names.pop(0)
Now you still want to have the for-loop that will loop over all of the actions including name picking so you encapsulate all of the code in a for-loop:
names = [
"Noah" ,"Liam" ,"William" ,"Anthony"
]
for i in range(len(names)):
# ...
Copy = driver.find_element_by_xpath('XPATH')
Copy.click()
name = names.pop(0)
print(f"Picked name: {name}")
Copy.send_keys(name)
# ...
You might notice that the names list is not inside the for-loop. That is because we don't want to reassign the list every time we try to use a new name.
If you're completely unsure how for-loops work or how to implement one yourself, you should probably start by reading about how they work.
https://docs.python.org/3/tutorial/controlflow.html?highlight=loop#for-statements
Last but not least you can see some # ... comments in my example indicating where the logic will probably go for the other part of your question: "Then logout and begin a new registration with the next username in the list if the REGISTRATION is FAILED, and skip if the REGISTRATION is SUCCEDED." I don't think we I can help you with that since there is simply not enough context or examples in your question.
Refer to this guide explaining how to ask a well formulated question so we can help you more next time.

How do I choose the position of the cursor when a user is inputting information in python?

Sorry If my code seems off, this is my first time asking here and I am somewhat new to python.
I want a user to give me the number of sets and reps for a workout.
Here is my code below:
print("Please enter the number of sets you would like to do followed by the number of reps. ")
sets, reps = input("Pushup- \n\t" + "Sets: " + "Reps: ").split()
So when I run this, naturally the cursor will be flashing at the end of "reps:" however what I want it to do is so that when I run it, the cursor will flash after "sets:" and when the user hits the space key, it will move all the way over to after "reps:".
I would recommend just having it as two inputs:
sets = input("Pushup-Sets: ")
reps = input("Pushup-Reps: ")
Is there a particular reason you need it done in one line?
Why don't you try doing something like this:
print("Please enter the number of sets you would like to do followed by the
number of reps.")
print("Pushup-")
sets = input("Sets:")
reps = input("Reps:")
It uses the return button instead of the spacebar, hope it helps!
As others have suggested, having it as two separate inputs will be much easier.
If you do want to make a text-based app which does it the way you've described, the library you're looking for is called "curses" (see: howto, reference).
However, it seems like a bit of an anachronism; for a quick app, separate inputs are much easier, and for a user-friendly app you'll probably want a graphical interface (or web) rather than a text-based one.

Writing and Editing Files (Python)

First of all i would like to apologize since i am a beginner to Python. Anyway I have a Python Program where I can create text files with the general form:
Recipe Name:
Item
Weight
Number of people recipe serves
And what I'm trying to do is to allow the program to be able to retrieve the recipe and have the ingredients recalculated for a different number of people. The program should output the the recipe name, the new number of people and the revised quantities for the new number of people. I am able to retrieve the recipe and output the recipe however i am not sure how to have the ingredients recaculated for a different number of people. This is part of my code:
def modify_recipe():
Choice_Exist = input("\nOkaym it looks like you want to modify a recipe. Please enter the name of this recipe ")
Exist_Recipe = open(Choice_Exist, "r+")
time.sleep(2)
ServRequire = int(input("Please enter how many servings you would like "))
I would recommend splitting your effort into multiple steps, and working on each step (doing research, trying to write the code, asking specific questions) in succession.
1) Look up python's file I/O. 1.a) Try to recreate the examples you find to make sure you understand what each piece of the code does. 1.b) Write your own script that accomplishes just this piece of your desired program, i.e. opens an exist recipe text file or creates a new one.
2) Really use you're own functions in Python particularly with passing your own arguments. What you're trying to make is a perfect example of good "modular programming", were you would right a function that reads an input file, another that writes an output file, another that prompts users for they number they'd like to multiple, and so on.
3) Add a try/except block for user input. If a user enters a non-numeric value, this will allow you to catch that and prompt the user again for a corrected value. Something like:
while True:
servings = raw_input('Please enter the number of servings desired: ')
try:
svgs = int(servings)
break
except ValueError:
print('Please check to make sure you entered a numeric value, with no'
+' letters or words, and a whole integer (no decimals or fractions).')
Or if you want to allow decimals, you could use float() instead of int().
4) [Semi-Advanced] Basic regular expressions (aka "regex") will be very helpful in building out what you're making. It sounds like your input files will have a strict, predictable format, so regex probably isn't necessary. But if you're looking to accept non-standard recipe input files, regex would be a great tool. While it can be a bit hard or confusing skill to learn, but there are a lot of good tutorials and guides. A few I bookmarked in the past are Python Course, Google Developers, and Dive Into Python. And a fantastic tool I strongly recommend while learning to build your own regular expression patterns is RegExr (or one of many similar, like PythonRegex), which show you what parts of your pattern are working or not working and why.
Here's an outline to help get you started:
def read_recipe_default(filename):
# open the file that contains the default ingredients
def parse_recipe(recipe):
# Use your regex to search for amounts here. Some useful basics include
# '\d' for numbers, and looking for keywords like 'cups', 'tbsp', etc.
def get_multiplier():
# prompt user for their multiplier here
def main():
# Call these methods as needed here. This will be the first part
# of your program that runs.
filename = ...
file_contents = read_recipe_file(filename)
# ...
# This last piece is what tells Python to start with the main() function above.
if __name__ == '__main__':
main()
Starting out can be tough, but it's very worth it in the end! Good luck!
I had to edit it a couple times because I use Python 2.7.5, but this should work:
import time
def modify_recipe():
Choice_Exist = input("\nOkay it looks like you want to modify a recipe. Please enter the name of this recipe: ")
with open(Choice_Exist + ".txt", "r+") as f:
content = f.readlines()
data_list = [word.replace("\n","") for word in content]
time.sleep(2)
ServRequire = int(input("Please enter how many servings you would like: "))
print data_list[0]
print data_list[1]
print int(data_list[2])*ServRequire #provided the Weight is in line 3 of txt file
print ServRequire
modify_recipe()

Categories