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?
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.
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?
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 = "))