Help please, why doesn't it show the next input?
MRAB
python at mrabarnett.plus.com
Fri Sep 13 18:48:49 EDT 2013
On 13/09/2013 23:12, William Bryant wrote:
> On Thursday, September 12, 2013 9:39:33 PM UTC+12, Oscar Benjamin wrote:
>> On 12 September 2013 07:04, William Bryant <gogobebe2 at gmail.com> wrote:
>>
>> > Thanks everyone for helping but I did listen to you :3 Sorry. This is my code, it works, I know it's not the best way to do it and it's the long way round but it is one of my first programs ever and I'm happy with it:
>>
>>
>>
>> Hi William, I'm glad you've solved your initial problem and I just
>>
>> wanted to make a couple of comments about how your program could be
>>
>> simplified or improved. The comments are below.
>>
>
> Hello, I've done this so far but why doesn't the mode function work?
>
> '''#*************************************************************************'''
> #* Name: Mode-Median-Mean Calculator *#
> #* *#
> #* Purpose: To calculate the mode, median and mean of a list of numbers *#
> #* and the mode of a list of strings because that is what we are *#
> #* learning in math atm in school :P *#
> #* *#
> #* Author: William Bryant *#
> #* *#
> #* Created: 11/09/2013 *#
> #* *#
> #* Copyright: (c) William 2013 *#
> #* *#
> #* Licence: IDK :3 *#
> '''**************************************************************************'''
>
>
>
>
> #-----# ~~Import things I am using~~ #-----#
>
> # |
> # |
> # \/
>
> import time
> import itertools
>
>
>
> #-----# ~~Variables that I am using, including the list.~~ #-----#
>
> # |
> # |
> # \/
>
Global variables and no parameter passing: yuck! :-)
> List = []
> NumberOfXItems = []
> Themode = []
>
> #-----# ~~Functions that I am using.~~ #-----#
>
> # |
> # |
> # \/
>
Your function names aren't meaningful.
> def HMNs():
> global TheStr, user_inputHMNs, List_input, List
> user_inputHMNs = input("You picked string. This program cannot calculate the mean or median, but it can calculate the mode. :D How many strings are you using in your list? (Can not be a decimal number) \nEnter: ")
This line doesn't do anything:
> user_inputHMNs
> time.sleep(1.5)
This variable is an integer, yet it's called 'TheStr'.
> TheStr = int(user_inputHMNs)
> for i in range(TheStr):
> List_input = input("Enter your strings. (One in each input field): ")
> List.append(List_input)
> print("Your list -> ", List)
Here you're comparing the list's .count method with an integer. It'll
never be true!
> if List.count == int(user_inputHMNs):
> break
> mode()
>
> def HMNn():
> global TheNum, user_inputHMNn, List_input, List
> user_inputHMNn = input("You picked number. :D How many numbers are you using in your list? (Can not be a decimal number) \nEnter: ")
> user_inputHMNn
> time.sleep(1.5)
> TheNum = int(user_inputHMNn)
> for i in range(TheNum):
> List_input = input("Enter your numbers. (One in each input field): ")
> List_input = int(List_input)
> List.append(List_input)
> print("Your list -> ", List)
The same bug as above:
> if List.count == int(user_inputHMNn):
> break
> mode()
> def NOS():
> while True: # Loops forever (until the break)
> answer = input("Does your list contain a number or a string? \nEnter: ")
> answer = answer.lower()
> if answer in ("string", "str", "s"):
> HMNs()
> break
> elif answer in ("number", "num", "n", "int"):
> HMNn()
> break
> elif answer in ("quit", "q"):
> break # Exits the while loop
> else:
> print("You did not enter a valid field, :P Sorry. \nEnter: ")
> time.sleep(1.5)
>
> def mode():
> global NumberOfXItems, Themode
> for i in List:
Here you're appending an item and then the number of times that the item
occurs:
> NumberOfXItems.append(i)
> NumberOfXItems.append(List.count(i))
Here you're getting the maximum entry, be it an item or the number of
times an item occurs (see above). Have a look at the Counter class from
the collections module:
> Themode = max(NumberOfXItems)
> print(Themode)
>
>
>
> #-----# ~~The functions which need calling~~ #-----#
>
> # |
> # |
> # \/
>
> NOS()
>
More information about the Python-list
mailing list