2017-10-11 5 views
-4

私はユーザが1-7の数字を与え、その曜日を曜日に対応させる関数を作ろうとしています。そうでなければ、 'Sorryこれは、「これまでPythonは何もしなくてもelse文を実行します

マイコード:

def num_day(): 

user_number = int(input('Please enter a number between 1 & 7: ')) 

if user_number == 1: 
    print('The number 1 corresponds to Monday') 

if user_number == 2: 
    print('The number 2 corresponds to Tuesday') 

if user_number == 3: 
    print('The number 3 corresponds to Tuesday') 

if user_number == 4: 
    print('The number 4 corresponds to Tuesday') 

if user_number == 5: 
    print('The number 5 corresponds to Tuesday') 

if user_number == 6: 
    print('The number 6 corresponds to Tuesday') 

if user_number == 7: 
    print('The number 7 corresponds to Tuesday') 

else: 
    print('Sorry, that is not a valid number.') 


num_day() 

それは文が正しいかどうかを取得しますが、中に投げ続けている 『正しい数値ではありません申し訳ありませんが、それが有効な数値ではありません』

+6

'if ... elif ... else'は' if'節を分離しません。 –

+2

はい、 'else'は、最新' if'に、全体ではなくスタックに適用されます。 – kindall

+0

2から7の数字はすべて火曜日に対応しているのはなぜですか?あなたのコードは、 'user_number'が7でないときはいつでも' '申し訳ありません、それは有効な数字ではありません。 ''という印字をします。 –

答えて

1

コメントで述べたように、これは失敗します。あなたはif..elif..elseの代わりif..if..elseを使用します。

if user_number == 1: 
    print('The number 1 corresponds to Monday') 

elif user_number == 2: 
    print('The number 2 corresponds to Tuesday') 

elif user_number == 3: 
    print('The number 3 corresponds to Tuesday') 

elif user_number == 4: 
    print('The number 4 corresponds to Tuesday') 

elif user_number == 5: 
    print('The number 5 corresponds to Tuesday') 

elif user_number == 6: 
    print('The number 6 corresponds to Tuesday') 

elif user_number == 7: 
    print('The number 7 corresponds to Tuesday') 

else: 
    print('Sorry, that is not a valid number.') 

これは、1つの論理的な声明にそれらのすべてを兼ね備え、かつelseは、キャッチオールALLテストのためだけではなく、最後のものです。


つまり、オーバーエンジニアリングの問題は、このような初心者の質問では常に楽しいと言われています。あなたは平日のデータ構造についてEnumについてどう思いますか?

import enum 

class Weekday(enum.Enum): 
    MONDAY = 1 
    TUESDAY = 2 
    WEDNESDAY = 3 
    THURSDAY = 4 
    FRIDAY = 5 
    SATURDAY = 6 
    SUNDAY = 7 

    def __str__(self): 
     return self.name.title() 

user_number = int(input("Enter a number: ")) 
try: 
    weekday = Weekday(user_number) 
    print(f"The number {user_number} corresponds to {weekday}") 
except ValueError: 
    print("Sorry, that is not a valid number.") 
+0

ありがとう、そのデータ構造は少し怖いです。 –

0

私は

:「このような何かを行うdは各 ifは独自の論理文ですので
user_number = int(input('Please enter a number between 1 & 7: ')) 
DayDict = {1:'Monday',2:'Tuesday',3:'Wednsday',4:'Thursday',5:'Friday',6:'Saturday',7:'Sunday'} 

def num_day(x): 
    if x in DayDict: 
     print 'The number '+ str(x) + ' corresponds to ' + DayDict[x] 
    else: 
     print 'Sorry, that is not a valid number.' 

num_day(user_number) 
+0

私は、私は列挙を使用するだろう。あるいは、あまり構築されていないソリューションのために、私は最初の要素 'None'を持つリストを使います。 '[なし、 "月曜日"、 "火曜日"、...]' –

+0

なぜダウン投票?私はただ助けようとしているだけです。 –

+0

あなたが提供した答えはOPのコードのためのtypo'd Python2ドロップインの置き換えです(これはおそらく2、3、4、5、6、7はすべてではありませんでした。彼のコードが期待どおりに機能していなかった理由は言及せずに火曜日になっていた)。 –

関連する問題