Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
while loop stumbling block
#1
Hey guys, I am very new to coding so please bare with me. I am busy with a python bootcamp trying to learn as much as quick as I can. I am currently busy with loops, while loops in particular. What I need to make the program do:

ask a user via input command to enter all student names and once he enters "Stop" the loop of asking him/her to enter the next name must stop. I think I have that part sorted. The next part is my struggle:

After the user enters: "Stop" :

The names of the students needs to be printed out, without the "Stop" being printed as that is obviously not a students name.


My attempt at coding the above looks like this:

names = input("Enter student name: ")
while names != "Stop":
    names = input("Enter student name: ")
    if names == "Stop":
        print(names)
So the result I am getting is the phrase "Stop" being printed instead of the student names entered prior to "Stop"

I would deeply appreciate some assistance.
Thanks in advance.

The YoungGrassHopper
Reply
#2
You need two variables: one for the name most recently entered, and one for the list of names that have been entered. Call them next_name and names. The input statement goes to next_name. If that's 'stop', you break out of the loop and print names. Otherwise, you append next_name to names.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
Thanks for the prompt response ichabod801 I really appreciate it stacks.
Reply
#4
(Sep-09-2019, 06:35 PM)ichabod801 Wrote: You need two variables: one for the name most recently entered, and one for the list of names that have been entered. Call them next_name and names. The input statement goes to next_name. If that's 'stop', you break out of the loop and print names. Otherwise, you append next_name to names.

Ok,

I gave it a try, but what I am getting is only the first name printed and not more than one name.
The user will obviously enter 1 name, press enter, get requested to enter another name... until he enters "Stop" I only seem to get the first name entered..
I literally started coding past Thursday so please don't get angry with me.
It would be best to explain as if I am a 4 year old. And I apologise if I am proving to be a waste of your precious time.

next_name = input("Enter student name: ")
names = 0
while names != "Stop":
    names = input("Enter student name: ")
    if names == "Stop":
        print(next_name)
    

Another while loop stumbling block I have is this:

The program needs to ask the user to repeatedly enter a number and stop + exit the loop once the user enters:
"-1"
The program must then calculate the average of the numbers entered  excluding the -1. 


The first part I think I have correct, but I do not know how to calculate the average of all the inputted numbers prior to " -1 "


Here is what I have so far:


num = int(input("Please enter a number: "))
while num != -1:
    num = int(input("Please enter a number: "))

    
Reply
#5
You are keeping your variables separate enough. This is an outline of what your code should look like for both problems:

data = []
while True:
    next_datum = input('What is the next whatever? ')
    if next_datum == stop_value:
        break
    data.append(next_datum)
print(data)
next_datum is what they just entered. data is a list of everything valid that they entered. stop_value is whatever response stops the loop.

For the one with numbers, you want to look at the int() function to convert strings to integers.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#6
(Sep-09-2019, 08:25 PM)ichabod801 Wrote: You are keeping your variables separate enough. This is an outline of what your code should look like for both problems:

data = []
while True:
    next_datum = input('What is the next whatever? ')
    if next_datum == stop_value:
        break
    data.append(next_datum)
print(data)
next_datum is what they just entered. data is a list of everything valid that they entered. stop_value is whatever response stops the loop.

For the one with numbers, you want to look at the int() function to convert strings to integers.

Ok, I see, I will try and recode it following your suggested code outline, thanks again so much for your help I do appreciate it :)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Stop/continue While loop block Moris526 68 25,369 Mar-28-2021, 09:21 PM
Last Post: Larz60+
  for loop stumbling block YoungGrassHopper 8 4,491 Sep-11-2019, 03:34 PM
Last Post: YoungGrassHopper

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020