私は自分のコードを使ってメッセージを暗号化/復号化しています。今はコードをちょっと整理しようとしていますが、エラーキャッチを追加しようとしています。私はこのエラーを関数内でキャッチするようにしたいので、コードの1ブロック内に6回のようなエラーをキャッチする必要はありません。Python 3関数内で変数を定義しています
c = 1
list = ['Y', 'N']
test1 = "H"
def f(test1):
while c == 1:
try:
test1 = raw_input("Input something yo")
if test1 not in list:
raise ValueError("Enter Y or N")
else:
return test1
break
except ValueError as error:
print (error)
a = f
a(test1)
a = test1
print (a)
if a == "Y":
print ("Yes")
else:
print ("No")
これはこれを実践するためのテストです。しかし、私はそれを成功させることができませんでした。したがって、このコードでは、ユーザー入力として「Y」または「N」のいずれかを定義したいと考えています。私は、関数fを呼び出すし、test1は変数名です。私は関数が実行された後にtest1になるようにしたい。したがって、関数が実行中で、ユーザーが "Y"を入力すると、 "Yes"が出力されます。そうでない場合、「No」が印刷されます。私の実際のスクリプトでは、この関数から返される値として複数の値を定義する必要があります。なぜなら、エラーキャッチプロセスを何度もタイプしたくないからです。ユーザーが "Y"または "N"を入力しなかった場合は、再度入力する必要があります。それはちょうど私が問題を抱えている値test1を返すだけです。現時点で
、TEST1は常に「H」ですが、私はそのラインを持っていない場合、私はこのエラーを取得する:
Traceback (most recent call last):
File "FuncTest.py", line 19, in <module>
a(test1)
NameError: name 'test1' is not defined
任意のアイデア私はこの問題を解決することができますか?事前にみんなありがとう! :D
なぜ値を関数に渡してすぐに破棄するのですか?関数呼び出しの外で生の入力を移動して渡すか、引数を渡すための要件を削除します。現時点では、未定義の変数を引数として渡しているため、エラーになります。 –
キース私はあなたが何を意味するか分かりません。私はそれがちょっと面倒であることを知っている、私はそれをきれいにするが、今は単なるテストです。私はちょうど値test1を返す方法を知りたいので、もしそれが "Y"なら "はい"を印刷するか、そうでなければ "いいえ"を印刷します。値が返されないように見えるのは、常に「いいえ」と表示されるからです。 – Javid
test1が定義されていないというエラーが表示されているのは、その定義を削除しているためです。 (あなたの例の3行目)。私のより完全な答えを今私は携帯電話ではない参照してください –