Опция выхода не работает :( - PullRequest
0 голосов
/ 07 августа 2020

Дорогие товарищи python мастера, будьте милы со мной, я просто новичок ie в программе python. Прямо сейчас я застрял с опцией «Выход» . Ниже мой код для расчета ИМТ. Любое предложение? Большое спасибо :)

import os
import math

def menu():
    print('\tBMI Calculator')
    print('\t1. Metric Unit - kg and m')
    print('\t2. Exit - not function yet')
    inp = input('>> ')
    
def metric():
    inp1 = input('Enter your weight in kg: ')
    inp2 = input('Enter your height in m: ')

    weight = int(inp1)
    height = float(inp2)

    bmi = weight / (height * height)
    if bmi <= 18.5:
        print('You are underweight')
        print('{:.2f}'.format(bmi))

    elif bmi >= 18.5 and bmi <= 24.9:
        print('You are in normal weight')
        print('{:.2f}'.format(bmi))

    elif bmi >= 25.0 and bmi <= 29.9:
        print('You are overweight')
        print('{:.2f}'.format(bmi))
    
    elif bmi  > 30.0:
        print('Obese')
        print('{:.2f}'.format(bmi))
    
    else:
        print('Wrong input')
    
    print('Keep continue consume healthy food!\n')

while True:
    menu()
    metric()
    os.system('pause')
    os.system('cls')

Ответы [ 3 ]

2 голосов
/ 07 августа 2020

ваша функция metric выполняется независимо от того, что вы ввели в качестве ответа в `` меню ''.

Попробуйте следующее:

def menu():
    print('\tBMI Calculator')
    print('\t1. Metric Unit - kg and m')
    print('\t2. Exit - not function yet')
    return input('>> ')

Затем в l oop:

while True:
    resp = menu()
    if resp == "1":
        metric()
    else:
        break
os.system('pause')
os.system('cls')

Таким образом, если пользователь выбирает 1, он запускает функцию metric(). В противном случае он выходит из l oop.

0 голосов
/ 07 августа 2020

Вы всегда можете сделать простую проверку. Вместо того, чтобы проверять True, вы можете проверить while menu() == '1'. Оператор while вызовет функцию menu(), а return from menu() предоставит необходимые данные для проверки. Это гарантирует, что вы попадете в l oop только для обработки метрик. Если значение отличается от 1, код выйдет из программы и завершит ее.

Чтобы это работало, вам также необходимо внести небольшое изменение в функцию menu ().

def menu():
    print('\tBMI Calculator')
    print('\t1. Metric Unit - kg and m')
    print('\t2. Exit - not function yet')
    return input('>> ')

#your metrics() function will come here
def metric():
    ......

while menu() == '1':
    metric()
    os.system('pause')
    os.system('cls')
0 голосов
/ 07 августа 2020

Просто используйте break в while l oop в зависимости от возвращаемого значения из menu().

def menu():
  ...
  ...
  return input('>>')
if menu() == '1':
   metric()

else:
   break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...