0

私は Python を初めて使用し、foursquare の非常に単純化されたバージョンを作成しようとしています。

ユーザーがチェックインしたり、以前のチェックインを日付と場所で検索したりできるようにしたいと考えています。私が持っているコードはチェックインで問題なく動作しているようですが、検索でユーザーに結果が返されません。ループ内の言葉遣いが間違っていることはわかっていforますが、辞書を検索する方法について混乱しています。

助けてくれて本当にありがとうございます。

print("What would you like to do? \n1 Check-in \n" \
  "2 Search check-ins by date \n3 Search check-ins by location \n4 Exit")

while True:
    import datetime
    current_date = str(datetime.datetime.now())
    check_in = {}
    choice = input("\nYour choice: ")

    if choice == '1':
        location = input("\nPlease enter your current location: ")
        check_in[current_date] = location
        print("You have checked in at", location, current_date)

    elif choice == '2':
        date_search = input("Please enter a date (yyyy/mm/dd) ")
        for date in check_in.keys():
            if date_search in check_in(date):
                print(check_in[key])

    elif choice == '3':
        location_search = input("Please enter a location: ")
        for date in check_in.keys():
            if location_search in check_in(date):
                print(date)

    elif choice == '4':
        break
4

2 に答える 2

1

いくつかのコメント:

  1. ループを通過するたびに、あなたはフラッシュしていますcheck_in。以前にそこに何を入れたかは問題ではありません。

  2. 選択肢 2 は単純なd.get(key)ステートメントに要約できます。ここでその仕組みを調べることができます。

  3. 使用しているキーは、思ったように印刷されません。「自宅」などの場所を入力すると、キーは次のように表示されます。

    Please enter your current location: Home
    You have checked in at Home 2012-04-16 19:44:26.235305
    {'2012-04-16 19:44:26.235305': 'Home'} # Print statement added by me.
    

その余分な情報すべてに気付きましたか? ええ、あなたが期待したものではありません。日付部分だけを取得したい場合は、datetimeモジュールをさらに詳しく調べて、完全に取得する方法を確認するか、怠惰に (これをデバッグしていたときのように) を使用して、datetime.datetime.now().split()[0]. この複雑なコードは、文字列をスペースで分割し、最初の要素 or を取得します'2012-04-16'

最後の選択肢は演習として残しておきますが、辞書のドキュメントを確認するだけで十分に作業を開始できると思います。

于 2012-04-17T01:47:56.590 に答える
0

inputs をs に変更しますraw_input。そうしないと、Python 2.7.2 では、このコードはinput実際の数値や文字列ではなく as コードとして評価されます。あなたが望んでいるものとはまったく違うと思います。

辞書を検索する最後の質問については、辞書での一致のチェックは決して一致しません。while のすべてのcheck_inループで変数を再初期化します。また、ユーザー入力を受け入れるものとは異なる形式で、現在の日付/時刻を辞書に入力しています。

現在地を入力してください: ホーム

(「あなたはチェックインしました」、「自宅」、「2012-04-16 20:43:08.891334」)

あなたの選択: 2

日付を入力してください (yyyy/mm/dd) 2012/04/16

あなたの選択:

データと入力を正規化しcheck_in、while ループの外側に移動する必要があります。

    print("What would you like to do? \n1 Check-in \n2 Search check-ins by date \n3 Search check-ins by location \n4 Exit")


check_in = {}

while(True):
    import datetime
    current_date = datetime.datetime.now().strftime("%Y/%m/%d")
    choice = raw_input("\nYour choice: ")

    if(choice == '1'):
        location = raw_input("\nPlease enter your current location: ")
        check_in[current_date] = location
        print check_in

    elif(choice == '2'):
        date_search = raw_input("Please enter a date (yyyy/mm/dd) ")
        for date,location in check_in.iteritems():
            if date_search == date:
                print "%s - %s" % (date,location)

    elif(choice == '3'):
        location_search = raw_input("Please enter a location: ")
        for date,location in check_in.iteritems():
            if location_search == location:
                print "%s - %s" % (date,location)
    elif(choice == '4'):
        break
于 2012-04-17T01:51:50.687 に答える