3 svar
71 visningar
jonte12 468
Postad: 13 nov 2022 14:12 Redigerad: 13 nov 2022 15:37

Kontrollera tal i intervall

Jag ska, som en del i en större uppgift, kontrollera om tal ligger i rätt intervall. Jag ska göra detta med hjälp av ett underprogram. Ett exempel när programmet är klart är:

Jag har en tanke att man kanske skulle kunna göra på följande vis:

def check_num(
                max_num :int,
                min_num :int):

        min_num_in_range=int(input("Mata in ett heltal i intervallet " + str(min_num) + "-" + str(max_num) + ": "))
        max_num_in_range=int(input("Mata in ett heltal i intervallet " + str(min_num_in_range) + "-" + str(max_num) + ": "))

        if min_num_in_range or max_num_in_range < min_num:
                print("Talet måste vara minst "+ str(min_num) + " och max " + str(max_num))
		elif num_num_in_range or max_num_in_range > max_num:
                print("Talet måste vara minst "+ str(min_num) + " och max "+ str(max_num))
        else:
		#Här vill jag komma ut lopen


def HP ():
        max_num=int(input("Mata in största tillåtna heltalet: "))
        min_num=int(input("Mata in minsta tillåtna heltalet: "))
        print()


        check_num(max_num, min_num)

HP()

Hur skulle man kunna lösa detta?

Fermatrix 7841 – Fd. Medlem
Postad: 13 nov 2022 14:31 Redigerad: 13 nov 2022 14:32

Man kan göra det på många sätt, vissa mer effektiva än andra. 

Ett sätt är: 

def limit_range_of_numbers(max_number, min_number, user_input):
    return max(min(max_number, user_input), min_number)


Ett mer narturligt sätt för nybörjare är förmodligen:

def restrict_magnitude_of_numbers(num1, num2):
    is_valid_input = max_number > num1 > min_number and min_number < num2 < max_number
    return is_valid_input

max och min kanske är globala i klassen? Du har kanske en referens med self? Det går inte att säga utan att veta hur din kod ser ut. Men detta kanske ger dig en idé om hur du kan göra.

jonte12 468
Postad: 13 nov 2022 14:48 Redigerad: 13 nov 2022 15:08
Dracaena skrev:

Man kan göra det på många sätt, vissa mer effektiva än andra. 

Ett sätt är: 

def limit_range_of_numbers(max_number, min_number, user_input):
    return max(min(max_number, user_input), min_number)


Ett mer narturligt sätt för nybörjare är förmodligen:

def restrict_magnitude_of_numbers(num1, num2):
    is_valid_input = max_number > num1 > min_number and min_number < num2 < max_number
    return is_valid_input

max och min kanske är globala i klassen? Du har kanske en referens med self? Det går inte att säga utan att veta hur din kod ser ut. Men detta kanske ger dig en idé om hur du kan göra.

Jag förstår inte riktigt hur du tänker vid ditt andra exempel. Alltså vad händer där? Hur ska man i så fall använda is_valid_input sedan för att kontrollera att det är korrekta nummer och göra så att användaren får mata in ett tal på nytt? Ska man använda den i en if-sats sen?

Fermatrix 7841 – Fd. Medlem
Postad: 13 nov 2022 15:16

Exempelvis kan man göra så här:

max_number = 20
min_number = 5
num1 = 3
num2 = 20
while restrict_magnitude_of_numbers(num1, num2) is False:
    num1 = int(input("num1 = "))
    num2 = int(input("num2 = "))
Svara Avbryt
Close