2017-06-14 25 views
1

私はCodeCademyを使用して自分自身でPythonを教える初心者のプログラマーです。私はそれまでに学んだ知識をチェックするために、自分でスクリプトを書いた。このスクリプトの目的は、ユーザー入力日付に基づいて特定の週末に利用可能な人物の名前を印刷し、スクリプトで書いた日付のリストと相互参照することです。スクリプトはCodeCademyで動作しますが、コマンドラインでは機能しません

奇妙な部分は、このスクリプトがCodeCademyのPython環境で意図した通りに機能し、エラーなしであることです。毎回期待している結果を正確に返します。ただし、コマンドラインからPython 3.6.1を使用してスクリプトを手動で実行しようとすると、このようなことは起こりません。むしろ、何時でも毎回同じ結果を返します。ここに私のコードです:

#script to tell who is free on a certain weekend 
input_date = input("Please input the weekend on which you are looking for in   
the format mm.dd (ex. weekend of June 30th is 06.30): ") 
ben_dates = [06.16,06.23,06.30,07.07,07.14,08.04,08.11] 
david_dates = [06.16,06.23,06.30,07.14,07.28,08.04,08.11] 
danyall_dates = [06.30,07.07,07.14,07.21,07.28,08.04,08.11] 
kevin_dates= [06.16,06.23,06.30,07.07,07.14,07.21,07.28,08.04,08.11,08.18] 
manan_dates=[06.16,07.14,07.21,07.28,08.04] 
jack_dates=[06.30,07.07,07.14,07.21,07.28,08.04] 

free_people = "The people free on this date are: " 
free_people_orig = free_people 


for date in ben_dates: 
    if input_date == date: 
    free_people = free_people + "Ben, " 


for date in david_dates: 
    if input_date == date: 
    free_people = free_people + "David, " 

for date in danyall_dates: 
    if input_date == date: 
    free_people = free_people + "Danyall, " 

for date in kevin_dates: 
    if input_date == date: 
    free_people = free_people + "Kevin, " 

for date in manan_dates: 
    if input_date == date: 
    free_people = free_people + "Manan, " 

for date in jack_dates: 
    if input_date == date: 
    free_people = free_people + "Jack, " 

if len(free_people) == len(free_people_orig): 
    free_people = "No one is free on this weekend." 

print(free_people) 

ので、例えば、ユーザ入力'06 0.30' CodeCademyには、印刷されるプログラムのこの日、人々は自由である場合:ベン、デビッド、Danyall、ケビン、ジャック、これは正しい結果になるでしょう。

しかし、コマンドラインで実行した場合、同じ入力で「今週は誰も無料ではありません」と表示され、なぜこのようなことが起こっているのか全く分かりません。

if、elif、else文を使用してwhileループとforループのいくつかのバリエーションを試し、free_people文字列の条件と書式を変更し、変更をトリガーするものと同様に他の多くの戦術この特定のソリューションについてはまだ、スクリプトを適切に実行できるものはありませんでした。 CodeCademyでは動作しますが、コンピュータでは動作しません。

また、私はこれがこのタスク用のスクリプトを作成する最良の方法とはかけ離れていることを認識しています。しかし、私は初心者であり、このスクリプトを書いていますが、自分で基本的な使い方ができるスクリプトを書くことで学んだ特定のスキルをテストすることが最大の関心事です。私はこの特定のスクリプトのこの特定のバージョンがなぜ機能しないのかを理解することにのみ興味があります。

P.S.これはStackOverflowの私の最初の投稿です、私はこの投稿を間違ってフォーマットした場合、私の謝罪です。

+1

Input_dateは 'str'であり、あなたがfloat's'と比較しようとしています。 – abccd

答えて

4

浮動小数点型にする必要があるときに文字列を入力するという問題があります。あなたのリスト内のすべての要素は浮動小数点であり、文字列型の要素がいずれかのリストに存在するかどうかを調べようとしています(False)。

これを試してみてください:

input_date = float(input("Please input the weekend on which you are looking for in the " 
         "format mm.dd (ex. weekend of June 30th is 06.30): ")) 
+0

これは完全に問題を修正しました、ありがとうございます! – MattO

+0

ようこそ。他のユーザーがあなたの質問に回答していることを知るように、この回答を回答としてマークすることを検討してください。ありがとうございました。 – Ajax1234

+0

私は知っている、私はできるだけ早くこの答えを受け入れるだろう。 StackOverflowは私に10分間答えを選ぶことを妨げ、その期間はまだアップしていません。ありがとうございました – MattO

関連する問題