Gå til innhold

[Python] Trenger hjelp med while/if statement


Anbefalte innlegg

Har begynt å lære meg Python, og har gjort "ferdig" en kalkulator.

 

number=input("Enter your math problem here: ")
 print number
choice = raw_input("Do you want to solve anonther one? Y or N.")
while choice =="Y" or choice =="y" :
numer = input("Enter your math problem here: ")
print numer
if choice == "N" or choice == "n" :
print "Goodbye!"

 

Jeg vil gjøre det slik at, der det står while, så skal den spørre hver gang "Do you want to solve another one? Y or N.", og det skal den gjøre uten at jeg må skrive tusenhvis av if statements etter hverandre, for å spørre. Slik som det er nå, hvis du skriver Y, så fortsetter den å løse stykker, uten å spørre "Do you want to solve another one? Y or N."

Lenke til kommentar
Videoannonse
Annonse

du kan gjøre noe lignende dette:

running = True
while running:
number=input("Enter your math problem")
print "The answe is:", number

choice = ""
while choice.lower() not in ["y", "n"]:
	choice = raw_input("Do you want me to solve anonther one? Y or N.")
if choice.lower() == "n":
	running = False
print "Goodbye!"

Endret av etse
Lenke til kommentar

du kan gjøre noe lignende dette:

running = True
while running:
number=input("Enter your math problem")
print "The answe is:", number

choice = ""
while choice.lower() not in ["y", "n"]:
	choice = raw_input("Do you want me to solve anonther one? Y or N.")
if choice.lower() == "n":
	running = False
print "Goodbye!"

 

Det funket akkurat slik jeg ville ha det til, men siden jeg er nybegynner så har jeg to "spørsmål":

 

- Kunne du forklart funksjonene du har brukt?

- Hva syns du om koden min?

 

# -*- coding: utf-8 -*-
#!/usr/bin/python
#Colorexample: bcolours.OKBLUE + "" + bcolors.ENDC
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
STOP = '\033[0m'
def disable(self):
	self.HEADER = ''
	self.OKBLUE = ''
	self.OKGREEN = ''
	self.WARNING = ''
	self.FAIL = ''
	self.STOP = ''
from time import sleep
from math import sqrt
print bcolors.OKBLUE + "  __		__	 __   ___________	   _ "
print bcolors.OKBLUE + " |  \	  /  |   /  \ |____   ____|	 |_| "
print bcolors.OKBLUE + " |   \	/   |  / __ \	 | | __	__  _  ____ "
print bcolors.OKBLUE + " | |\ \  / /| | / /__\ \	| ||  |  |  || ||  __|"
print bcolors.OKBLUE + " | | \ \/ / | ||		|   | ||  |__|  || || |__ "
print bcolors.OKBLUE + " | |  \__/  | ||  ____  |   | ||   __   || ||  __|"
print bcolors.OKBLUE + " | |		| || |	| |   | ||  |  |  || || |__ "
print bcolors.OKBLUE + " |_|		|_||_|	|_|   |_||__|  |__||_||____| "  + bcolors.STOP
print				  " By Stepking2"
sleep(2)
print bcolors.OKBLUE + "Formula is: "
print bcolors.OKBLUE + "- Subtraction = -"
print bcolors.OKBLUE + "- Addition = +"
print bcolors.OKBLUE + "- Multiplication = * "
print bcolors.OKBLUE + "- Exponent = **Exponent "
print bcolors.OKBLUE + "- Squareroot = sqrt(Number) " + bcolors.STOP
raw_input("Understood? Press enter to continue. ")
sleep(1)
number=input("Enter your math problem: ")
print number

running = True
while running:
	number=input("Enter your math problem: ")
	print "The answer is:", number

	choice = ""
	while choice.lower() not in ["y", "n"]:
			choice = raw_input("Do you want me to solve anonther one? Y or N.")
	if choice.lower() == "n":
			running = False
print "Goodbye!"

 

Utenom det du har bidratt med, og fargekoding som jeg fant på StackOverflow, begynt igår å skrive for fullt, og skrev resten på ca. 2 timer.

Endret av stepking2
Lenke til kommentar

running = True
while running:

Her setter jeg verdien til variabelen "running" til true og har en while-løkke som vil kjøre helt til running er false. Dette gjør at programmet vil kjøre helt til jeg setter running til false (noe jeg gjør senere når brukeren sier han ikke vil mer)

 

    number=input("Enter your math problem")
    print "The answe is:", number

Dette er din kode såregner med du forstår dette

 
    choice = ""
    while choice.lower() not in ["y", "n"]:
		    choice = raw_input("Do you want me to solve anonther one? Y or N.")

Her kjører jeg en løkke som sjekker om brukeren taster inn Y eller N, så lenge input er noe annet enn Y eller N så vil programmet fortsette å spørre. Grunnen til at jeg sier .lower() er at dette gjør at det brukeren skrev inn blir til små bokstaver. Så da trenger jeg ikke sjekke både Y og y.

 

    if choice.lower() == "n":
		    running = False

Her sjekker jeg om brukeren tastet inn N eller n (husk det jeg sa om lower() over). Hvis det sette jeg running til false, noe som vil så den ytterse while-løkken til å ikke fortsette. Og programmet vil da avslutte.

print "Goodbye!"[/code]

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...