ラズベリーパイでGPIOに接続したスイッチの入力を検知するPythonプログラムを、勉強して作ってみました。
回路
GPIOの入力ピンは、何も接続していない時の電気的な状態【HIGH/LOW】を設定しておくことが出来ます。(内蔵プルアップ/プルダウンが使用できます)

GPIO24を入力ピンに設定し、デフォルト状態をHIGH(内蔵プルアップ)にしておき、スイッチONでLOWになるようにしました。
GPIO14は出力ピンに設定し、LEDを点灯します。
プログラム(Python)
プラグラム開始と共にLEDを点灯し、スイッチを押すとLEDを消してプログラム終了という動作にしました。
import RPi.GPIO as GPIO #GPIO操作用モジュールをインポート
import time #sleep用のモジュールインポート
GPIO.setmode(GPIO.BOARD) #今回はピン番号でプログラムを記述
GPIO.setup(8, GPIO.OUT) #8番ピンを出力ピンに設定
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) #後述
GPIO.output(8, GPIO.HIGH) #8番ピンをHIGHに設定
while GPIO.input(18) == GPIO.HIGH: #後述
time.sleep(0.2)
GPIO.cleanup() #GPIOピンの終了処理今回新しいのは下記2点です。
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
18番ピンを入力ピンに設定し、「pull_up_down=GPIO.PUD_UP」で内蔵プルアップをON(HIGH状態に設定)しています。
while GPIO.input(18) == GPIO.HIGH:
time.sleep(0.2)
time.sleep(0.2)
18番ピンがHIGHの間、0.2秒間スリープを繰り返します。
18番ピンは内蔵プルアップでHIGHにしてあるので、スイッチを押してGNDに接続されるまでHIGH状態です。スイッチを押すとLOWとなり、whileループから抜けてプラグラムは終了します。
実物
ブレッドボードで配線した実物はこんな感じ。

スイッチを押すとLEDが消え、プログラムが終了することを確認しました。