Menu
CoddyTech

入力値の検証

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)
challenge icon

チャレンジ

簡単

プログラムは入力を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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ