2017-07-12 36 views
0

私はPython(およびPython 3を使用すること)の非常に新しいです。謝罪---私は非常に基本的な間違いをしているに違いないことを知っています。ここで異なる引数に同じ値を返す関数

は間違いの構造であると、私は例をあげる:私は機能func(x)を書きました。 「正しい」ことをテストするために、値x1、つまりprint(func(x1))を接続しました。出力はy1で、正しいものでした。それから私はprint(func(x2))を試しました。それはまた私にy1を与えて、正しいy2ではない。他の値はxと同様です。最初は私はそれがその特定の機能に間違いだと思ったが、私は他の機能と同様の問題を抱えていた。私はすべての機能に共通のミスをしていますか?

以下は一例です。私はいくつかの異なるバリエーションでこれを試みましたが、まだ問題がありました。それが助けになるなら、私は他の例を挙げることができます。あなたのif文で

def num_to_day(x): 
    if 0: 
     return "Sunday" 
    elif 1: 
     return "Monday" 
    elif 2: 
     return "Tuesday" 
    elif 3: 
     return "Wednesday" 
    elif 4: 
     return "Thursday" 
    elif 5: 
     return "Friday" 
    elif 6: 
     return "Saturday" 
    else: 
     return "Not Valid" 
print(num_to_day(5)) 
+4

この場合、 'if x == 0:.. elif x == 1 ..'のように' if'で条件をテストする必要があります。 – randomir

答えて

3

、あなたはX各番号と等しい指定する必要がある - 例えば、if x == 0:を。

現在、あなたが指定したものをxとは関係ないと、番号自体の真理値をテストしています。これを確認するには、試してください:あなたが他の整数Trueを返しながら、それは便利なPythonで、0がFalseと評価されていることを知っているかもしれません

if 1: 
    print('Monday') 
Monday 

print([bool(num) for num in range(7)]) 
[False, True, True, True, True, True, True] 

boolは、その引数の真理値をテストします。

最後に、多くの一つの代替は、辞書からあなたの平日をルックアップすることです。 .getでは、エラーがスローされた場合に返される値を指定できます。

def num_to_day(x): 
    days = { 
     0 : 'Sunday', 
     1 : 'Monday', 
     2 : 'Tuesday', 
     3 : 'Wednesday', 
     4 : 'Thursday', 
     5 : 'Friday', 
     6 : 'Saturday' 
     } 
    return days.get(x, 'Not Valid') 

num_to_day(0) 
Out[54]: 'Sunday' 

num_to_day(10) 
Out[55]: 'Not Valid' 
+0

それはうまくいった!ありがとう! (それは私に12分間答えを受け入れさせません) – Amanda

+1

あなたはこの比較のためにリストを使いたいかもしれません。 ex。 – doratheexplorer0911

+0

はい、私は様々なバージョンを試していました...しかし、私は投稿されたと思った私が作っていたミスを理解するのが最も簡単でした...私はそれが基本的でなければならないことを知っていました... – Amanda

0

あなたの関数に引数を渡すと、その後ないすべてで、それを使用しています。実際に作業するには、実際にxをすべての数値と比較する必要があります。if 0:if False:と等しく、if x == 0:にはなりません。

とにかく、elifのこのカスケードは、がコード化されていないことの主な例です。をコードします。はるかに良い解決策は、リストや辞書を使用することです:

2

あなたはあなたの関数内であなたの議論をまったく使っていません。

def num_to_day(x): 
    if x == 0: # <-- Now x gets evaluated 
     return "Sunday" 
    elif x == 1: 
     return "Monday" 
    elif x == 2: 
     return "Tuesday" 
    elif x == 3: 
     return "Wednesday" 
    elif x == 4: 
     return "Thursday" 
    elif x == 5: 
     return "Friday" 
    elif x == 6: 
     return "Saturday" 
    else: 
     return "Not Valid" 
print(num_to_day(5)) 
-1

関数(x)のローカル変数スコープと比較値を比較するのを忘れてしまった。 "if 0"はあなたが望むint比較ではなくブール比較になります。あなたのステートメントを "if x == 0"などに置き換えて、あなたの問題を解決します。あなたがリストに日を入れてリストのインデックスを返すようにすると、別の方法が簡単になります。

def num_to_day(x): 
    dates = ['sunday','monday',tuesday','wednesday'] 
    return dates[x-1] 
関連する問題