回答編集履歴

2

Pythonでのコード例を追記

2017/09/14 04:40

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -522,12 +522,268 @@
522
522
 
523
523
 
524
524
 
525
+ ---
526
+
527
+ **実行例**
528
+
529
+ ```
530
+
531
+ Input lacked number.
532
+
533
+ Press space key to start game.
534
+
535
+
536
+
537
+ 1 2 3 4 5 7 8 9
538
+
539
+ 6
540
+
541
+ Correct.
542
+
543
+
544
+
545
+ 1 2 3 4 5 7 8 9
546
+
547
+ 6
548
+
549
+ Correct.
550
+
551
+
552
+
553
+ 1 2 3 4 5 6 7 9
554
+
555
+ 9
556
+
557
+ 8
558
+
559
+ Correct.
560
+
561
+
562
+
563
+ 2017/09/14 12:01:40 : SCORE 7.6
564
+
565
+ ```
566
+
567
+
568
+
525
569
  ランキング機能を付けると、ファイル入出力が絡むだけもっと複雑になります。
526
570
 
527
571
 
528
572
 
573
+ 追記
574
+
529
575
  ---
530
576
 
577
+ だいたい同じようなゲームを、Pythonでも実装してみました。
578
+
579
+ ```Python
580
+
581
+ # main.py
582
+
583
+
584
+
585
+ from score_datum import ScoreDatum
586
+
587
+ from training import do_training
588
+
589
+
590
+
591
+ def main():
592
+
593
+ now_score_datum = do_training()
594
+
595
+ now_score_datum.print_info()
596
+
597
+
598
+
599
+ if __name__ == '__main__':
600
+
601
+ main()
602
+
603
+ ```
604
+
605
+
606
+
607
+ ```Python
608
+
609
+ # score_datum.py
610
+
611
+
612
+
613
+ import datetime
614
+
615
+
616
+
617
+
618
+
619
+ class ScoreDatum():
620
+
621
+ def __init__(self, score: float):
622
+
623
+ self._time_datum = datetime.datetime.today()
624
+
625
+ self._score = score
626
+
627
+
628
+
629
+ @property
630
+
631
+ def time_datum(self) -> datetime.datetime:
632
+
633
+ return self._time_datum
634
+
635
+
636
+
637
+ @property
638
+
639
+ def score(self) -> float:
640
+
641
+ return self._score
642
+
643
+
644
+
645
+ def print_info(self) -> None:
646
+
647
+ print(self.time_datum.ctime(), round(self.score, ndigits=1))
648
+
649
+ ```
650
+
651
+
652
+
653
+ ```Python
654
+
655
+ # training.py
656
+
657
+
658
+
659
+ from score_datum import ScoreDatum
660
+
661
+ from my_util import wait_key_input
662
+
663
+ import random
664
+
665
+ import time
666
+
667
+
668
+
669
+ NUM_LENGTH = 9
670
+
671
+
672
+
673
+ def do_training(stage_num: int = 3):
674
+
675
+ print()
676
+
677
+ print('Input lacked number.')
678
+
679
+ print('Press space key to start game.')
680
+
681
+ wait_key_input(' ')
682
+
683
+
684
+
685
+ start_time = time.time()
686
+
687
+ for _ in range(stage_num):
688
+
689
+ do_one_stage()
690
+
691
+
692
+
693
+ elapsed_time = time.time() - start_time
694
+
695
+ return ScoreDatum(elapsed_time)
696
+
697
+
698
+
699
+ def do_one_stage() -> None:
700
+
701
+ complete_list = list(range(NUM_LENGTH + 1))[1:]
702
+
703
+
704
+
705
+ lacked_number = random.randint(1, NUM_LENGTH)
706
+
707
+ lacked_list = _make_lack_list(complete_list, lacked_number)
708
+
709
+
710
+
711
+ print(lacked_list)
712
+
713
+ while True:
714
+
715
+ try:
716
+
717
+ input_num = int(input())
718
+
719
+ except:
720
+
721
+ continue
722
+
723
+
724
+
725
+ if input_num == lacked_number:
726
+
727
+ break
728
+
729
+
730
+
731
+ print('Correct.')
732
+
733
+ print()
734
+
735
+
736
+
737
+ def _count_num_in_list(src_list: list, num: int) -> int:
738
+
739
+ return src_list.count(num)
740
+
741
+
742
+
743
+ def _make_lack_list(src_list: list, lack_num: int) -> list:
744
+
745
+ if _count_num_in_list(src_list, lack_num) != 1:
746
+
747
+ return None
748
+
749
+
750
+
751
+ src_list.remove(lack_num)
752
+
753
+ return src_list
754
+
755
+ ```
756
+
757
+
758
+
759
+ ```Python
760
+
761
+ # my_util.py
762
+
763
+
764
+
765
+ def wait_key_input(key: str = None) -> None:
766
+
767
+ if key is None:
768
+
769
+ input()
770
+
771
+ return
772
+
773
+
774
+
775
+ while input() != key:
776
+
777
+ pass
778
+
779
+
780
+
781
+ ```
782
+
783
+
784
+
785
+ ---
786
+
531
787
  **実行例**
532
788
 
533
789
  ```
@@ -538,7 +794,15 @@
538
794
 
539
795
 
540
796
 
797
+ [1, 2, 4, 5, 6, 7, 8, 9]
798
+
799
+ 3
800
+
801
+ Correct.
802
+
803
+
804
+
541
- 1 2 3 4 5 7 8 9
805
+ [1, 2, 3, 4, 5, 7, 8, 9]
542
806
 
543
807
  6
544
808
 
@@ -546,24 +810,22 @@
546
810
 
547
811
 
548
812
 
549
- 1 2 3 4 5 7 8 9
813
+ [1, 2, 3, 4, 5, 6, 8, 9]
550
814
 
551
815
  6
552
816
 
817
+ 7
818
+
553
819
  Correct.
554
820
 
555
821
 
556
822
 
557
- 1 2 3 4 5 6 7 9
558
-
559
- 9
560
-
561
- 8
562
-
563
- Correct.
564
-
565
-
566
-
567
- 2017/09/14 12:01:40 : SCORE 7.6
823
+ Thu Sep 14 13:39:56 2017 5.6
568
-
824
+
569
- ```
825
+ ```
826
+
827
+
828
+
829
+ リスト処理が楽なのは嬉しいですね。
830
+
831
+ 文字数でカウントすると、Cの場合の約40%で実装出来ました。

1

Pythonno

2017/09/14 04:40

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
File without changes