入力値の検証
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 67/78。
入力はテキストとして渡され、int()は文句を言わずに任意のテキストを変換します。テキストが整数でない場合、エラーではなく誤った値が返されます。
print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3変換する前にテキストを確認します。テキスト全体が整数の場合、is_valid_int() は true を返します。
print("42".is_valid_int()) # 真
print("-15".is_valid_int()) # 真
print("3.14".is_valid_int()) # 偽
print("abc".is_valid_int()) # 偽
print("".is_valid_int()) # 偽is_valid_float()は小数に対して同じ処理を行います。また、整数も受け付けます。5は有効なfloatだからです。
print("3.14".is_valid_float()) # true
print("5".is_valid_float()) # true
print("five".is_valid_float()) # falseスペースも文字として数えられます。" 99 ".is_valid_int() は false です。入力の前後にスペースがある可能性がある場合は、まず strip_edges() を呼び出してください。
有効な数値でも、値が不適切な場合があります。変換後、プログラムで許可されている範囲内か確認しましょう。
var text := OS.read_string_from_stdin()
if not text.is_valid_int():
print("Please enter a whole number")
else:
var age := int(text)
if age < 0 or age > 120:
print("Age must be between 0 and 120")
else:
print("Age: ", age)チャレンジ
簡単プログラムは入力を1行読み取ります。変換する前に確認してください。
- 整数の場合は、
You entered:の後に数値を出力します - それ以外の場合は、
Invalid input! Please enter a valid number.を出力します
入力が42の場合、出力は次のとおりです。
You entered: 42入力がabcと3.14の場合、出力は次のとおりです。
Invalid input! Please enter a valid number.テキストではなく変換後の数値を出力してください。入力が007の場合、出力はYou entered: 7です。
自分で試してみよう
extends Node
func _ready():
var user_input := OS.read_string_from_stdin()
# 入力を確認し、数値またはエラーメッセージを出力する
pass
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ