2016-05-05 13 views
-2

Ich muss das Vorkommen der Min-Nummer aus der Eingabe zählen, die vom Benutzer eingegeben wurde. Dies ist, was ich bis jetzt habe, es zeigt die Max- und Min-Zahlen an, aber ich weiß nicht, wie man die Vorkommen mit ELIF zählt, zB die kleinste Zahl tritt 'x' mal auf ' nur ein Anfänger bei Python, bitte helfeZählvorkommen der vom Benutzer eingegebenen Nummer

max = 0 
min = 0 
count_l = 0 
count_s = 0 

while True: 
    inp = raw_input ("Enter a number\n: ") 
    if inp == '0': break 
    try: 
     num = float (inp) 
    except: 
     print 'Please enter a valid number' 
     continue 
    if min == 0 or num < min: 
     min = num 

    if max == 0 or num > max: 
     max = num 

def result (max, min): 
    print ('Largest Number Entered\n:') , max 
    print ('Smallest Number Entered\n:'), min 
    print ('Occurence of largest number is: '), count_l 
    print ('Occurence of smallest number is: '), count_s 

result (max, min) 
+0

Dieser Code Syntaxfehler hat; korrigiere sie bitte. –

+0

Sind sie jetzt behoben? :/ – scope1

Antwort

1

Nun, Sie ändern die kleinste Zahl dynamisch. Dies bedeutet, dass die Zählung jedes Mal zurückgesetzt werden sollte, wenn Sie die Nummer ändern. Das gleiche gilt für die maximale Anzahl.

Beispiel

max = float("-inf") 
min = float("inf") 
count_l = 0 
count_s = 0 

def safecast(cast_type, value, default=None): 
    try: 
     default = cast_type(value) 
    finally: 
     return default 

def input_until(prompt, cast_type, value, default=None): 
    while True: 
     ret = safecast(cast_type, raw_input(prompt), default=default) 
     if ret != value: 
      yield ret 
     else: 
      break 

for num in input_until("Enter a number\n:", float, 0): 
    if num != 0: 
     if num < min: 
      min = num 
      count_s = 1 
     elif num > max: 
      max = num 
      count_l = 1 
     elif num == min: 
      count_s += 1 
     elif num == max: 
      count_l += 1 

def result(max, min): 
    print('Largest Number Entered:') , max 
    print('Smallest Number Entered:'), min 
    print('Occurance of largest number is: '), count_l 
    print('Occurance of smallest number is: '), count_s 

result (max, min) 

Auch in Zukunft, verwenden Sie keine Variablen namens "max" oder "min", weil diese Python sind eingebaute Funktionen.

+0

Vielen Dank für Ihre Antwort !! Dies läuft nicht richtig für mich, da ich die größte Zahl, die Übereinstimmung der größten Zahl, die kleinste Zahl und das Auftreten der kleinsten Zahl anzeigen muss. Die kleinste Zahl wird als Keine angezeigt, wobei beide Zählwerte jeweils 1 entsprechen, auch wenn die kleinste/größte Zahl mehrfach eingegeben wird:/ – scope1

+0

Das ist bei mir nicht der Fall. Ich habe den Code in den letzten paar Minuten aktualisiert. Versuche es noch einmal. https://i.gyazo.com/5d1226475b9a8e314205b87821a73260.png – Goodies

+0

Das hat funktioniert und danke! Ich bin ein Anfänger und nur zu meinem eigenen Verständnis, was hätte ich für die ELIF-Option setzen sollen? wie das ist die Methode, die ich gelernt habe und habe mehr Verständnis dafür, dann etwas von Ihrem Code, nichts für ungut: P – scope1

0

verwenden nur einige praktische Datenstruktur wie ein defaultdict oder Counter (möglicherweise, Decimal ist ein besserer Datentyp als Wörterbuchschlüssel im Vergleich zu float verwendet werden sollte):

from decimal import Decimal 
from collections import defaultdict 

d = defaultdict(Decimal) 

while True: 
    inp = raw_input ("Enter a number\n: ") 
    if inp == '0': break 
    try: 
     num = Decimal(inp) 
    except: 
     print 'Please enter a valid number' 
     continue 
    d(num) += 1 

items = sorted(d.items()) 

min_val, min_occurrences = items[0] 
max_val, max_occurrences = items[-1] 
+0

Tracking * alle * der Eingabe, wenn nur die Extreme benötigt werden, ist ein bisschen ineffizient. –

+0

Um ehrlich zu sein, brauche ich nur Anleitung, wie man die elif-Option umstellen kann, um die Vorkommnisse zu zeigen, ich bin neu in der Programmierung und diese Grundlagen sind ungefähr so ​​bequem wie ich bin innerhalb des Themas: L – scope1

Verwandte Themen