jonhhy Posted July 26, 2022 at 10:46 AM Report Share #626571 Posted July 26, 2022 at 10:46 AM Bom dia P@P, neste programa, a ordem dos prints esta a sair trocada: Desafio 059: Crie um programa que leia dois valores e mostre um menu na tela: [1] Somar [2] Multiplicar [3] Maior [4] Novos números [5] Sair do programa Seu programa deverá realizar a operação solicitada em cada caso. def readNums(): a = int(input('Digit a number: ')) b = int(input('Digit other number: ')) return a, b option = 3.5 while True: if option == 3.5: num1, num2 = readNums() else: print('''\nBem Vindo ao Menu! \nDigite uma das opções:\n [1] Somar [2] Multiplicar [3] Maior [4] Novos números [5] Sair do programa\n\n''') while option > 6 and option < 0: option = int(input('Say a option: ')) if option == 1: print('Sum: {} + {} = {}'.format(num1, num2, num1+num2)) elif option == 2: print('Multiplication: {} * {} = {}'.format(num1, num2, num1*num2)) elif option == 3: print('Greater is {}'.format(max(num1, num2))) elif option == 4: num1, num2 = readNums() elif option == 5: print('The End!') break option = int(input('Say a option: ')) Digit a number: 4 Digit other number: 3 Say a option: 1 Bem Vindo ao Menu! Digite uma das opções: [1] Somar [2] Multiplicar [3] Maior [4] Novos números [5] Sair do programa 5eDOemn.png <- Output em imagem (representado acima) Sum: 4 + 3 = 7 <- # este print devia ter vindo antes de Bem Vindo ao Menu! (texto a itálico) Say a option: Como faço? (em C à a limpexa de buffer senão estou esquecido ..) Link to comment Share on other sites More sharing options...
thoga31 Posted July 28, 2022 at 06:57 PM Report Share #626605 Posted July 28, 2022 at 06:57 PM Tens a condição mal feita nesta linha: while option > 6 and option < 0 A condição correcta é option > 6 or option < 0. A opção que está a ser lida é da tua última linha de código, não deste ciclo while. Já agora, o "problema" do buffer de input é importante em C, mas não se apresenta em Python. Aproveitaria para rever a estrutura do programa. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
jonhhy Posted August 1, 2022 at 01:27 PM Author Report Share #626628 Posted August 1, 2022 at 01:27 PM Em 28/07/2022 às 19:57, thoga31 disse: Tens a condição mal feita nesta linha: while option > 6 and option < 0 A condição correcta é option > 6 or option < 0. A opção que está a ser lida é da tua última linha de código, não deste ciclo while. Já agora, o "problema" do buffer de input é importante em C, mas não se apresenta em Python. Aproveitaria para rever a estrutura do programa. Muito grato pelas sugestões úteis Thoga31, já tinha alterado o valor lógico, mas após ler o comentário e correr o programa de novo reparei o tão mau estava a estrutura (além de confusa). Acho que nem o ciclo de execução estava a seguir direito e daí ter surgido a questão do buffer, sorry for that. Penso que esta versão está pelo menos um pouco melhor: def readNums(): a = int(input('Digit a number: ')) b = int(input('Digit other number: ')) return a, b num1, num2 = readNums() while True: print('''\nWelcome! \nChoose a option:\n [1] Sum [2] Multiplication [3] Greater [4] New numbers [5] Exit \n\n''') option = int(input('\nSay a option: ')) while option > 6 or option < 0: option = int(input('Invalid option ...\nSay a option: ')) print(f'\n[{option}]') if option == 1: print('Sum: {} + {} = {}'.format(num1, num2, num1+num2)) elif option == 2: print('Multiplication: {} * {} = {}'.format(num1, num2, num1*num2)) elif option == 3: # max(num1, num2)) print('Greater is {}'.format(max(num1, num2))) elif option == 4: num1, num2 = readNums() elif option == 5: print('\nThe End!') break Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now