为什么我的代码不打印任何东西?(python)

时间:2018-02-08 02:49:41

标签: python

这些是我的指示:

使用while循环编写程序,打印从1到1001的每三个数字的总和(包括1和1001)

(1 + 4 + 7 + 10 + ....)

这是我的代码:

    num = 0
    x = 1
    while x != 1001:
        num += x
        x += 3

    print(num)

有人可以指出我出错的地方吗?

4 个答案:

答案 0 :(得分:5)

您错误估算了预期值,x永远不会是10011001周围的数字是10001003,因此while循环将永远消失

我想你可以使用:

while x != 1000:

或:

while x < 1001:
@idjaw指出

注意,在这里使用!=不是一个很好的选择。

答案 1 :(得分:5)

您的while循环永远不会将条件import UIKit import MobileCoreServices class viewcontroller: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { @IBOutlet var imgView: UIImageView! let imagepicker: UIImagePickerController! = UIImagePickerController() var captureimage: UIImage var videoURL: URL! var flagImageSave = false override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func btnCaptureImageFromCamera(_sender:UIButton) { if (UIImagePickerController.isSourceTypeAvailable(.camera)) { flagImageSave = true imagepicker.delegate = self imagepicker.sourceType = .camera imagepicker.mediaTypes = [kUTTypeImage as String] imagepicker.allowsEditing = false present (imagepicker, animated: true, completion: nil) } } @IBAction func btnLoadImageFromLibrary(_sender: UIButton) { flagImageSave = false imagepicker.delegate = self imagepicker.sourceType = .photoLibrary imagepicker.mediaTypes = [kUTTypeImage as String] imagepicker.allowsEditing = true present (imagepicker, animated: true, completion: nil) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { let mediaType = info[UIImagePickerControllerMediaType] as! NSString if mediaType.isEqual(to: kUTTypeImage as NSString as String) { captureimage = info[UIImagePickerControllerOriginalImage] as! UIImage if flagImageSave { UIImageWriteToSavedPhotosAlbum(captureimage, self, nil, nil) } imgView.image = captureimage } } } func btnCaptureImageFromCamera(_ sender: UIButton) { } func btnLoadImageFromLibrary(_ sender: UIButton) { } 评估为x != 1001。 我查看了True的最后几个值,这些是

x

如您所见,994 997 1000 1003 的价值永远不会变为x。 因此,要在1001超过x时终止条件,您需要修改条件如下。

1001

答案 2 :(得分:2)

x将不会取值1001。它在下一次迭代中变为1000然后变为1003,因此循环继续持续下去。 而x <= 1001: 可以用来解决这个问题。

答案 3 :(得分:0)

x永远不会1001所以它会永远存在。 如果要确保将print语句置于循环内并打印x

的值
num = 0
x = 1
while x != 1001:
    num += x
    x += 3
    print(x)

它会打印x的值。一旦越过ctrl+c,就给予1000

4
7
10
13
16
19
22
25
28
31
34
37
40
43
46
49
52
55
58
61
64
67
70
73
76
79
82
85
88
91
94
97
100
103
106
109
112
115
118
121
124
127
130
133
136
139
142
145
148
151
154
157
160
163
166
169
172
175
178
181
184
187
190
193
196
199
202
205
208
211
214
217
220
223
226
229
232
235
238
241
244
247
250
253
256
259
262
265
268
271
274
277
280
283
286
289
292
295
298
301
304
307
310
313
316
319
322
325
328
331
334
337
340
343
346
349
352
355
358
361
364
367
370
373
376
379
382
385
388
391
394
397
400
403
406
409
412
415
418
421
424
427
430
433
436
439
442
445
448
451
454
457
460
463
466
469
472
475
478
481
484
487
490
493
496
499
502
505
508
511
514
517
520
523
526
529
532
535
538
541
544
547
550
553
556
559
562
565
568
571
574
577
580
583
586
589
592
595
598
601
604
607
610
613
616
619
622
625
628
631
634
637
640
643
646
649
652
655
658
661
664
667
670
673
676
679
682
685
688
691
694
697
700
703
706
709
712
715
718
721
724
727
730
733
736
739
742
745
748
751
754
757
760
763
766
769
772
775
778
781
784
787
790
793
796
799
802
805
808
811
814
817
820
823
826
829
832
835
838
841
844
847
850
853
856
859
862
865
868
871
874
877
880
883
886
889
892
895
898
901
904
907
910
913
916
919
922
925
928
931
934
937
940
943
946
949
952
955
958
961
964
967
970
973
976
979
982
985
988
991
994
997
1000
1003
1006

正如你清楚地看到x永远不会变成1001.这就是为什么循环永远运行。 正如其他人所说,将条件更改为x <= 1001,这将结束你的循环。