How to keep increasing variable number in loop inpython [duplicate] - python

This question already has answers here:
How do I create variable variables?
(17 answers)
Closed 4 months ago.
I need to create a code where the user can input a certain number of courses, and then it will take the gpa of them, but how can I change the variable name in the loop?
I have this so far
number_courses= float(input ("Insert the number of courses here:"))
while number_courses>0:
mark_1= input("Insert the letter grade for the first course here: ")
if mark_1=="A+" :
mark_1=4.0
number_courses= number_courses-1
If I want to change the variable name of mark_one to something different each time I go through the loop, what is the simplest way I can do this? And also is it possible to change it in my input statement to ask for first, second, third... as I go through the loop? I have tried searching on google, but none of the answers I can understand as their code is far behind my level or they didn't seem to answer what I needed either. Thanks.

You want to use a list or something similar to gather the input values:
number_courses=input("Insert the number of courses here: ")
marks = []
while number_courses>0:
mark = input("Insert the letter grade for the first course here: ")
if mark == "A+":
mark = 4.0
marks.append(mark)
number_courses -= 1
print marks

Use a dictionary:
number_courses= float(input ("Insert the number of courses here:"))
marks = {'A+':4, 'A':3.5, 'B+':3}
total_marks = 0
while number_courses:
mark_1= input("Insert the letter grade for the first course here: ")
if mark_1 in marks:
total_marks += marks[mark_1] #either sum them, or append them to a list
number_courses -= 1 #decrease this only if `mark_1` was found in `marks` dict

Related

How to check a part of an input | Python [duplicate]

This question already has answers here:
Understanding slicing
(38 answers)
Closed 1 year ago.
I want to check a specific part of an input but I don't know "where" it is
I tried with this:
a = input('Enter command')
if a[0:5] == '(Command name)':
if a[7:?] == '(Subject)':
if a[?:len(a)] == '(Choice)':
To be continued
So, the input is divided into three parts; The command, the subject, and which type of the command it will run.
But which index should the ? be? I don't know the length of the word. Is it impossible?
No, I know that I can make it, just not how.
I suppose your input should go something like this:
command subject choice
So there are basically three parts(might be more). I suggest you break the input in list as:
a = [str(x) for x in input().split()]
To get the length of each entities:
len(entity)
And for index you can use index():
list.index(entity)
If they are always one word, maybe something like this will work:
terms = a.strip().split(" ")
command_name = terms[0]
subject = terms[1]
choice = terms[2]
if there is a possibility of double spaces, it needs to be more clever
the above is the same as
command_name, subject, choice = a.strip().split(" ")

Program printing a number a certain times instead of multiplying [duplicate]

This question already has answers here:
Why does multiplication repeats the number several times? [closed]
(7 answers)
Closed 1 year ago.
I’ve written a piece of code that instead of print the product, prints a number a certain number of times. Whats wrong with it?
twelve = 12
name = input("What is your name? \nAnswer: ")
print("Cool name!")
nums = input("\n\nHow much pocket money did you receive last month?\nAnswer: ")
total = nums * twelve
print("\n\nI think you get ", total + " pounds in pocket money per year! Nice!")
The reason is that your nums variable is a string, which is the default with all Python inputs. Try converting it to int:
nums = int(input(...))
Or float if you are inputting a floating point number.

Lists function not working in if condition [duplicate]

This question already has answers here:
Fastest way to check if a value exists in a list
(11 answers)
Closed 2 years ago.
Hi I am new to programming and I like to try to make the code work different way.
Unfortunately, variable called unlucky cant be read when printing.
So when the user enter the listed value [7 6 5], it doesnt print out as "You have selected unlucky number". I have include the image and copy of my code :
option = int(input("Guess the correct number between 0 to 10 : \nYour choice :"))
unlucky_number= [7,6,5] # Unlucky numbers, listed
if option == unlucky_number: # should print somewhere close when user enters list number
print("You have selected a unlucky number")
elif option== 6: # only 6 is correct
print ("Correct Guess")
elif option in range (0,4):
print("Not close")
else:
print ("Not in the range, choose between 1 to 10")
Please tell me whats wrong with it and how can I make a better version of it.
Thank you enter image description here
if option == unlucky_number
This line is causing you troubles. Your "option" holds a singular number, but your "unlucky_number" is a list. List can not be equal to a number, they are completely different animals. What you want is:
if option in unlucky_number

isinstance() not working the way I think it should [duplicate]

This question already has answers here:
Read an integer list from single line input along with a range using list comprehension in Python 3
(2 answers)
Closed 3 years ago.
My program requires a user input of a list of two elements, so to check if those conditions are satisfied I used the following code:
start = input('Enter you start location.\nE.g. Enter "[2,5]" for x-coordinate 2 and y-coordinate
5.')
while isinstance(start, list) == False or len(start) != 2:
start = input('Try again.')
This will never exit the while loop no matter what I input. Why?
Because your start variable turns out to be a string:start = "[2,5]", which is not a list. You can ask the user to input e.g 2,3,
then you get "2,3". You then can split it to a list using start.split(',')
Absolutely not recommanded for obvious security risk, but you can use eval.
start = eval(input('Enter you start location.\nE.g. Enter "[2,5]" for x-coordinate 2 and y-coordinate 5.'))
A prefered way is by using split, but in this case ask the user to enter coordinate separated by a coma.
start = input('Enter you start location.\nE.g. Enter "2,5" for x-coordinate 2 and y-coordinate 5.')
start = start.split(",")
Edit as recommanded by #soyapencil comments
inp_str = input('Enter you start location.\nE.g. Enter "[2,5]" for x-coordinate 2 and y-coordinate 5.')
start = [int(i) for i in iter(eval(inp_str,{}))]

Drawing a right triangle with loops [duplicate]

This question already has answers here:
Using python, How can I make a pyramid using for loops?
(3 answers)
Closed 6 years ago.
I have spent the last half hour playing around and I still don't know how to make it so a character is added each time it loops.
This picture can better explain it better of what I mean.
here's my code:
triangle_char = input("Enter a character: \n")
triangle_height = int(input("Enter triangle height: \n"))
for row in range(triangle_height):
print(triangle_char)
(My previous answer was not very well thought out, so edit:)
You just need to keep adding your triangle_char to a string. Start by declaring an empty string
string = ""
and then every iteration of the loop, add one character to it
string += triangle_char
For example:
triangle_char = input("Enter a character: \n")
triangle_height = int(input("Enter triangle height: \n"))
string = ""
for row in range(triangle_height):
string += triangle_char
print(string)
Will give you the result you are looking for

Categories