0

私のプログラムは数学的な入力を受け取り、先に進む前にエラーがないかチェックします。これは私が助けが必要なコードの部分です:

expression= introduction()#just asks user to input a math expression    
operators= set("*/+-")
numbers= set("0123456789")
for i in expression:
    while i not in numbers and i not in operators:
        print("Please enter valid inputs, please try again.")
        expression= introduction()

エラーループを設定しましたが、問題は、このシナリオでループを更新する方法がわからないことです。誰?

シンプルなものが必要です。このOPに掲載されているコードに近いものが必要です。何かのようなもの:

expression= introduction()#just asks user to input a math expression    
operators= set("*/+-")
numbers= set("0123456789")
while True:
    for i in expression:
        if i not in numbers and i not in operators:
            print("Please enter valid inputs, please try again.")
            expression= introduction()
    else:
        break

このコードも機能しないことに注意してください。ユーザーが「式」に入力するすべての間違いに対してループします。

以下のようなものは高度すぎて使用できません。

valid = operators | numbers
while True:
    expression = introduction()
    if set(expression) - valid:
        print 'not a valid expression, try again'
    else: 
        break

import string

expression = introduction()    
operators = {'*', '/', '+', '-'}
numbers = set(string.digits)
while any(char not in numbers and char not in operators for char in expression):
    print("Please enter valid inputs, please try again.")
    expression = introduction()
4

2 に答える 2

1

あなたは2番目のコードで非常に近かった。いくつかの変更を行う必要があり、コードは次のようになります。

expression = ""
operators= set("*/+-")
numbers= set("0123456789")
while True:
    expression= introduction()  # You should read the next expression here
    for i in expression:
        if i not in numbers and i not in operators:
            print("Please enter valid inputs, please try again.")
            break # You should have a break here
    else:
        break

print expression  # Print if valid
  • 式が有効でない場合は、ループから抜け出してfor loop 続行するだけです。while
  • そして、式が有効な場合は、else blockof yourを実行しfor-loop、while ループから抜け出します。
  • while ループの外側で使用するexpressionには、while ループの外側で宣言する必要があります。
于 2012-11-08T11:00:47.853 に答える
1

all()またはを使用できない場合any()は、エラーを含むリストの長さをテストできます。

if [c for c in expression if c not in operators|numbers]:
    # error

|演算子なし:

if [c for c in expression if c not in operators and c not in numbers]:
    # error
于 2012-11-08T11:02:40.707 に答える