If-statement voor strings in python?

Ik ben een absolute beginner en heb gekeken naar http://en.wikibooks.org/ wiki/Python_Programming/Conditional_Statementsmaar ik kan het probleem hier niet begrijpen. Het is vrij eenvoudig, als de gebruiker y invoert, moet deze worden afgedrukt, hoewel ik een syntaxisfout krijg op IF answer==”y”

answer = str(input("Is the information correct? Enter Y for yes or N for no"))
proceed="y" or "Y" 
If answer==proceed:
print("this will do the calculation"):
else:
exit()

Antwoord 1, autoriteit 100%

Zelfs als je de verkeerd geplaatste Ifen onjuiste inspringing in je code hebt gecorrigeerd, zou het niet werken zoals je waarschijnlijk had verwacht. Gebruik inom een tekenreeks te vergelijken met een reeks tekenreeksen. Hier is hoe je het zou doen (en houd er rekening mee dat Ifallemaal kleine letters is en dat de code in het If-blok één niveau ingesprongen is).

Eén benadering:

if answer in ['y', 'Y', 'yes', 'Yes', 'YES']:
    print("this will do the calculation")

Nog een:

if answer.lower() in ['y', 'yes']:
    print("this will do the calculation")

Antwoord 2, autoriteit 24%

Ifmoet Ifzijn. Uw programma zou er als volgt uit moeten zien:

answer = raw_input("Is the information correct? Enter Y for yes or N for no")
if answer.upper() == 'Y':
    print("this will do the calculation")
else:
    exit()

Merk ook op dat de inspringing belangrijk is, omdat het een blok markeert in Python.


Antwoord 3, autoriteit 14%

Python is een hoofdlettergevoelige taal. Alle Python-sleutelwoorden zijn kleine letters. Gebruik If, niet If.

Zet ook geen dubbele punt achter de aanroep van print(). Laat ook de aanroepen print()en exit()inspringen, aangezien Python inspringing gebruikt in plaats van haakjes om codeblokken weer te geven.

En ook, proceed = "y" or "Y"zal niet doen wat je wilt. Gebruik proceed = "y"en if answer.lower() == proceed:, of iets dergelijks.

Er is ook het feit dat uw programma wordt afgesloten zolang de invoerwaarde niet het enkele teken “y” of “Y” is, wat in tegenspraak is met de vraag van “N” voor het alternatieve geval. In plaats van je elseclausule daar, gebruik je elif answer.lower() == info_incorrect:, met ergens vooraf info_incorrect = "n". Vraag dan gewoon om het antwoord of zoiets als de invoerwaarde iets anders was.


Ik raad aan om de tutorial in de Python-documentatie door te nemen als je zoveel problemen hebt zoals je nu leert. http://docs.python.org/tutorial/index.html


Antwoord 4, autoriteit 14%

Je wilt:

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no"))
if answer == "y" or answer == "Y":
  print("this will do the calculation")
else:
  exit()

Of

answer = str(raw_input("Is the information correct? Enter Y for yes or N for no"))
if answer in ["y","Y"]:
  print("this will do the calculation")
else:
  exit()

Opmerking:

  1. Het is “als”, niet “Als”. Python is hoofdlettergevoelig.
  2. Inspringing is belangrijk.
  3. Er staat geen dubbele punt of puntkomma aan het einde van python-commando’s.
  4. U wilt raw_inputniet invoer; inputevalueert de invoer.
  5. “of” geeft je het eerste resultaat als het evalueert naar waar, en het tweede resultaat anders. Dus "a" or "b"resulteert in "a", terwijl 0 or "b"resulteert in "b". Zie De eigenaardige aard van en en of.

Antwoord 5, autoriteit 6%

proceed = "y", "Y"
if answer in proceed:

U wilt ook niet

answer = str(input("Is the information correct? Enter Y for yes or N for no"))

Je wilt

answer = raw_input("Is the information correct? Enter Y for yes or N for no")

input()evalueert alles wat is ingevoerd als Python-expressie, raw_input()retourneert een string.

Bewerken: dat geldt alleen voor Python 2. Op Python 3 is inputprima, hoewel str()-wrapping nog steeds overbodig is.


Antwoord 6

Python is hoofdlettergevoelig en moet goed worden ingesprongen. U moet kleine letters “if” gebruiken, uw voorwaarden correct laten inspringen en de code heeft een bug. proceedresulteert in y

Other episodes