私はユーザーが変換に対応する数値を入力する変換プログラムを作成しました。例えば。ユーザーが1を入力すると、コードはkmからマイルへの変換を実行します。文字列入力を評価して関数を実行する
if choice == 1: km = float(input("Enter the amount of kilometres: ")) print(str(kmtomiles(km))+" miles")
私が悪いと、あなたのコードを壊すするので、多くの可能な方法があるので、それが正しい変換を行います
私はユーザーが変換に対応する数値を入力する変換プログラムを作成しました。例えば。ユーザーが1を入力すると、コードはkmからマイルへの変換を実行します。文字列入力を評価して関数を実行する
if choice == 1: km = float(input("Enter the amount of kilometres: ")) print(str(kmtomiles(km))+" miles")
私が悪いと、あなたのコードを壊すするので、多くの可能な方法があるので、それが正しい変換を行います
入力検証が難しいものであることをユーザが25cm to inches
に入るので、もしこれを作りたいです入力。良いコードは、物事がうまくいかない可能性のあるすべての方法を考慮する必要があります。特定のユースケースの場合、目的の入力が「25cm〜インチ」、またはいくつかのバリエーションがある場合は、という名前のグループをpython regexモジュールとという名前のグループを使用して関連フィールドを抽出できます。例を以下に示します。おそらくこれをtry exceptブロックに入れて、一致するものが見つからなければ、再びユーザーにプロンプトを出すか、またはそこから抜け出すようにしてください。これは、構築するための最小限の例に過ぎません。辞書fields
には、別のコンバータ機能で使用する関連情報が含まれています。
#input.py
import re
pattern = "(?P<num>[0-9]+)\s*(?P<current_unit>\w+) to (?P<desired_unit>\w+)"
while True:
try:
convert_string = input("What to you want to convert? (press(q) to quit): ")
if convert_string == 'q' or convert_string == 'Q':
break
m = re.search(pattern, convert_string)
fields = m.groupdict()
except AttributeError:
print("Sorry, invalid input, please try again(or enter q to quit): ")
continue
if convert_string == 'q' or convert_string == 'Q':
break
if fields is None:
continue
else:
print("You want %(num)s %(current_unit)s to be converted to %(desired_unit)s" % fields)
break
$ python3.4 input.py
What to you want to convert? (press(q) to quit): 25cm to inches
You want 25 cm to be converted to inches
$ python3.4 input.py
What to you want to convert? (press(q) to quit): 340lb to kgs
You want 340 lb to be converted to kgs
$ python3.4 input.py
What to you want to convert? (press(q) to quit): lb to kgs
Sorry, invalid input, please try again(or enter q to quit):
What to you want to convert? (press(q) to quit): q
$ python3.4 input.py
What to you want to convert? (press(q) to quit): lb to kgs
Sorry, invalid input, please try again(or enter q to quit):
What to you want to convert? (press(q) to quit): 240 lb to kgs
You want 240 lb to be converted to kgs
パターン文字列を説明できますか? – Richard
カッコ内の任意の式は、キャプチャしたい一致した文字列の特定の部分を表します。これらはグループと呼ばれます。自分の位置でキャプチャするか、ここで行ったように名前を付けることができます。名前付きグループは?P
ユーザーは「25cm to inches」という文章全体を入力しますか? –
はい、または12キロメートルからキロメートルのような他の変換@ Ramesh-X – Richard
入力文字列を分割することでこれを行うことができます。しかし、ユーザーが単語のスペルを間違えた場合、コードは機能しません。したがって、ユーザーが最初に必要とする変換のタイプをユーザーに要求してから、値を入力するように要求するとよいでしょう。 –