こんにちは、最初にこれは宿題だと言いたいので、ストレートに答えたくありません。問題は:
このタスクは、コンマで区切られた数字を含む文字列からリストを作成する機能を実装します (数字の間に空白がある場合もあります)。たとえば、文字列 "1,2,3, 4.5, 6.7, 8" はリスト [1, 2, 3, 4.5, 6.7, 8] になります。
次の関数を記述します。
is_numeric() - この関数には文字列パラメーターがあり、文字列内のすべての文字が数字、コンマ、スペース、またはドットの場合に True を返します。他の文字がある場合、関数は False を返す必要があります。
string_to_list() - この関数は文字列パラメーターを受け取り、文字列内の数値のリストを返します。最初に is_numeric() 関数を呼び出して、文字列に不正な文字 (文字など) がないことを確認する必要があります。不適切な文字がある場合は、空のリストを返す必要があります。不正な文字がない場合は、文字列内のデータからリストを構築しようとする必要があります。このためには、2 つの連続するコンマの間のすべての部分文字列を調べる必要があります。その部分文字列にドットがない場合は、部分文字列を整数に変換する必要があります。ドットが 1 つだけ (それ以上でもそれ以下でもない) ある場合は、float に変換する必要があります。2 つの連続するコンマの間の部分文字列のいずれかが int または float に変換できない場合 (たとえば、"4.5.8" はドットが多すぎるため)、関数は空のリストを返す必要があります。ヒント:
main() - ユーザーから文字列を取得する main() 関数。次に string_to_list() 関数を呼び出してユーザー文字列からリストを作成し、結果のリストを出力します。次に、続行するかどうかをユーザーに尋ねます。続行する場合は、「y」と入力する必要があります。その場合、関数 (メイン) は前の手順を繰り返す必要があります。ユーザーに入力を求め、それをリストに変換し、続行するかどうかをもう一度ユーザーに尋ねます。ユーザーが続行を希望しない場合は、'n' を入力する必要があります。
私が持っている唯一のコードは、文字列の最初の文字だけをチェックして、それが数字か文字かを確認します。文字、数字、コンマ、ピリオド、またはスペースがあるかどうかを確認する必要があります。私はこのプログラムを読んで本当に迷いました。ユーザーから文字列を取得する必要があることはわかっています。すべての文字列が許容可能な入力 (文字、数字、コンマ、ピリオド、スペース) の 1 つであれば、その文字列をリストにします。私のコードはシェルで読み取られます。
s = input("Enter a set of numbers (integers or floats) separated by comma:")
def is_numeric(s):
for char in list(s):
if char.isdigit():
return True
if char.isalpha():
return False
break
if is_numeric(s) == True:
print(s)
else:
print('Error')
================================ 再スタート ================= ===============
コンマで区切られた一連の数値 (整数または浮動小数) を入力してください:1,2,3,4
1,2,3,4================================ 再スタート ================= ===============
コンマで区切られた一連の数値 (整数または浮動小数) を入力してください:1,2,3,a
1,2,3,a================================ 再スタート ================= ===============
コンマで区切られた一連の数値 (整数または浮動小数) を入力してください:a,1,2,3
エラー================================ 再スタート ================= ===============
一連の数値 (整数または浮動小数点数) をコンマで区切って入力してください:1234a
1234a================================ 再スタート ================= ===============
コンマで区切られた一連の数値 (整数または浮動小数) を入力してください:asdf3
エラー
前もって感謝します!