1
{
2
"cells": [
3
{
4
"cell_type": "markdown",
5
"metadata": {},
6
"source": [
7
" ![](http://onm3nv9z1.bkt.clouddn.com/%E5%AE%BD%E5%9B%BE-1205x420.jpg)"
8
]
9
},
10
{
11
"cell_type": "markdown",
12
"metadata": {},
13
"source": [
14
"##
15
"
16
"
17
"
18
"
19
]
20
},
21
{
22
"cell_type": "markdown",
23
"metadata": {},
24
"source": [
25
"# Python测验20题"
26
]
27
},
28
{
29
"cell_type": "markdown",
30
"metadata": {},
31
"source": [
32
">#### 刚开始学Python,基础很重要,告诫自己不要好高骛远,把基础打好才是最重要的。\n",
33
"\n",
34
">#### 以下我们列出了20个Python基础训练题,来动手试试可以答对多少吧!"
35
]
36
},
37
{
38
"cell_type": "markdown",
39
"metadata": {},
40
"source": [
41
"### - 1.以下为学习Python的第一个程序,即如何输出\"Hello World!\";\n",
42
" \n",
43
"代码如下:"
44
]
45
},
46
{
47
"cell_type": "code",
48
"execution_count": null,
49
"metadata": {
50
"collapsed": true
51
},
52
"outputs": [],
53
"source": [
54
"# 该实例输出 Hello World!\n",
55
"print('Hello World!')"
56
]
57
},
58
{
59
"cell_type": "markdown",
60
"metadata": {},
61
"source": [
62
"### - 2.利用Python求和; 以下为通过用户输入两个数字,并计算两个数字之和。\n",
63
"\n",
64
"代码如下:"
65
]
66
},
67
{
68
"cell_type": "code",
69
"execution_count": null,
70
"metadata": {
71
"collapsed": true
72
},
73
"outputs": [],
74
"source": [
75
"# 用户输入数字\n",
76
"num1 = input('输入第一个数字:')\n",
77
"num2 = input('输入第二个数字:')\n",
78
" \n",
79
"# 求和\n",
80
"sum = float(num1) + float(num2)\n",
81
" \n",
82
"# 显示计算结果\n",
83
"print('数字 {0} 和 {1} 相加结果为: {2}'.format(num1, num2, sum))"
84
]
85
},
86
{
87
"cell_type": "markdown",
88
"metadata": {},
89
"source": [
90
"##### 提示:在该实例中,我们通过用户输入两个数字来求和。使用了内置函数 input() 来获取用户的输入,input() 返回一个字符串,所以我们需要使用 float() 方法将字符串转换为数字。 两数字运算,求和我们使用了加号 (+)运算符,除此外,还有 减号 (-), 乘号 (*),除号(/),地板除 (//) 或 取余 (%)。\n",
91
"\n",
92
"我们还可以将以上运算,合并为一行代码哦!你可以尝试一下:"
93
]
94
},
95
{
96
"cell_type": "code",
97
"execution_count": null,
98
"metadata": {
99
"collapsed": true
100
},
101
"outputs": [],
102
"source": [
103
"## Your Code here"
104
]
105
},
106
{
107
"cell_type": "markdown",
108
"metadata": {},
109
"source": [
110
"### - 3.利用Python求平方根。 通过用户输入一个数字,并计算这个数字的平方根:\n",
111
"\n",
112
"平方根,又叫二次方根,表示为〔√ ̄〕,如:数学语言为:√ ̄16=4。语言描述为:根号下16=4。\n",
113
"代码如下:"
114
]
115
},
116
{
117
"cell_type": "code",
118
"execution_count": null,
119
"metadata": {
120
"collapsed": true
121
},
122
"outputs": [],
123
"source": [
124
"num = float(input('请输入一个数字: '))\n",
125
"num_sqrt = num ** 0.5\n",
126
"print(' %0.3f 的平方根为 %0.3f'%(num ,num_sqrt))"
127
]
128
},
129
{
130
"cell_type": "markdown",
131
"metadata": {},
132
"source": [
133
"##### 提示:在该实例中,我们通过用户输入一个数字,并使用指数运算符 ** 来计算改数的平方根。\n",
134
"\n",
135
"思考:以上程序只适用于正数。负数和复数应该怎样实现呢?"
136
]
137
},
138
{
139
"cell_type": "code",
140
"execution_count": null,
141
"metadata": {
142
"collapsed": true
143
},
144
"outputs": [],
145
"source": [
146
"# 计算实数和复数平方根\n",
147
"# 导入复数数学模块\n",
148
" \n",
149
"import cmath\n",
150
" \n",
151
"num = int(input(\"请输入一个数字: \"))\n",
152
"# your code here\n",
153
"print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(num ,num_sqrt.real,num_sqrt.imag))"
154
]
155
},
156
{
157
"cell_type": "markdown",
158
"metadata": {},
159
"source": [
160
"##### 提示:该实例中,我们使用了 cmath (complex math) 模块的 sqrt() 方法。"
161
]
162
},
163
{
164
"cell_type": "markdown",
165
"metadata": {},
166
"source": [
167
"### - 4.利用Python求二次方程。 以下为通过用户输入数字,并计算二次方程;\n",
168
"\n",
169
"代码如下:"
170
]
171
},
172
{
173
"cell_type": "code",
174
"execution_count": null,
175
"metadata": {
176
"collapsed": true
177
},
178
"outputs": [],
179
"source": [
180
"# 二次方程式 ax**2 + bx + c = 0\n",
181
"# a、b、c 用户提供\n",
182
" \n",
183
"# 导入 cmath(复杂数学运算) 模块\n",
184
"import cmath\n",
185
" \n",
186
"a = float(input('输入 a: '))\n",
187
"b = float(input('输入 b: '))\n",
188
"c = float(input('输入 c: '))\n",
189
" \n",
190
"# 计算\n",
191
"d = (b**2) - (4*a*c)\n",
192
" \n",
193
"# 两种求解方式\n",
194
"sol1 = (-b-cmath.sqrt(d))/(2*a)\n",
195
"# your code here: sol2 = \n",
196
" \n",
197
"print('结果为 {0} 和 {1}'.format(sol1,sol2))"
198
]
199
},
200
{
201
"cell_type": "markdown",
202
"metadata": {},
203
"source": [
204
"##### 提示:该实例中,我们使用了 cmath (complex math) 模块的 sqrt() 方法 来计算平方根。"
205
]
206
},
207
{
208
"cell_type": "markdown",
209
"metadata": {},
210
"source": [
211
"### - 5.利用Python求三角形的面积。以下为通过用户输入三角形三边长度,并计算三角形的面积;\n",
212
"\n",
213
"代码如下:"
214
]
215
},
216
{
217
"cell_type": "code",
218
"execution_count": null,
219
"metadata": {
220
"collapsed": true
221
},
222
"outputs": [],
223
"source": [
224
"a = float (input ('输入三角形第一边长:'))\n",
225
"b = float (input ('输入三角形第二边长:'))\n",
226
"c = float (input ('输入三角形第三边长:'))\n",
227
"while a+b
228
" print ('输入的边构不成三角形,请重新输入!')\n",
229
" a = float (input ('输入三角形第一边长:'))\n",
230
" b = float (input ('输入三角形第二边长:'))\n",
231
" c = float (input ('输入三角形第三边长:'))\n",
232
"\n",
233
"# your code here: s = \n",
234
"# your code here: area = \n",
235
"print ('三角形面积为:%0.2f'%area)"
236
]
237
},
238
{
239
"cell_type": "markdown",
240
"metadata": {},
241
"source": [
242
"### - 6.利用Python生成随机数。以下演示了如何生成一个随机数;\n",
243
"\n",
244
"代码如下:"
245
]
246
},
247
{
248
"cell_type": "code",
249
"execution_count": null,
250
"metadata": {
251
"collapsed": true
252
},
253
"outputs": [],
254
"source": [
255
"# 生成 0 ~ 9 之间的随机数\n",
256
" \n",
257
"# 导入 random(随机数) 模块\n",
258
"import random\n",
259
" \n",
260
"print(random.randint(0,9))"
261
]
262
},
263
{
264
"cell_type": "markdown",
265
"metadata": {},
266
"source": [
267
"##### 提示:以上实例我们使用了 random 模块的 randint() 函数来生成随机数,你每次执行后都返回不同的数字(0 到 9)"
268
]
269
},
270
{
271
"cell_type": "markdown",
272
"metadata": {},
273
"source": [
274
"### - 7.利用Python将摄氏温度转化为华氏温度。以下演示了如何将摄氏温度转华氏温度;\n",
275
"\n",
276
"代码如下:"
277
]
278
},
279
{
280
"cell_type": "code",
281
"execution_count": null,
282
"metadata": {
283
"collapsed": true
284
},
285
"outputs": [],
286
"source": [
287
"# 用户输入摄氏温度\n",
288
" \n",
289
"# 接收用户输入\n",
290
"celsius = float(input('输入摄氏温度: '))\n",
291
" \n",
292
"# 计算华氏温度\n",
293
"# your code here: fahrenheit = \n",
294
"print('%0.1f 摄氏温度转为华氏温度为 %0.1f ' %(celsius,fahrenheit))"
295
]
296
},
297
{
298
"cell_type": "markdown",
299
"metadata": {},
300
"source": [
301
"##### 提示:以上实例中,摄氏温度转华氏温度的公式为 celsius * 1.8 = fahrenheit - 32。所以得到以下式子:"
302
]
303
},
304
{
305
"cell_type": "markdown",
306
"metadata": {},
307
"source": [
308
"### - 8.利用Python进行变量交换。以下通过用户输入两个变量,并相互交换;\n",
309
"\n",
310
"代码如下:"
311
]
312
},
313
{
314
"cell_type": "code",
315
"execution_count": null,
316
"metadata": {
317
"collapsed": true
318
},
319
"outputs": [],
320
"source": [
321
"# 用户输入\n",
322
"\n",
323
"x = input('输入 x 值: ')\n",
324
"y = input('输入 y 值: ')\n",
325
"\n",
326
"# 创建临时变量,并交换\n",
327
"# your code here: temp = \n",
328
"# your code here: \n",
329
"# your code here: \n",
330
"\n",
331
"print('交换后 x 的值为: {}'.format(x))\n",
332
"print('交换后 y 的值为: {}'.format(y))"
333
]
334
},
335
{
336
"cell_type": "markdown",
337
"metadata": {},
338
"source": [
339
"##### 提示:以上实例中,我们创建了临时变量 temp ,并将 x 的值存储在 temp 变量中,接着将 y 值赋给 x,最后将 temp 赋值给 y 变量。 我们也可以不创建临时变量,用一个非常优雅的方式来交换变量。"
340
]
341
},
342
{
343
"cell_type": "code",
344
"execution_count": null,
345
"metadata": {
346
"collapsed": true
347
},
348
"outputs": [],
349
"source": [
350
"x,y = y,x"
351
]
352
},
353
{
354
"cell_type": "markdown",
355
"metadata": {},
356
"source": [
357
"所以上述实例可以修改为:"
358
]
359
},
360
{
361
"cell_type": "code",
362
"execution_count": null,
363
"metadata": {
364
"collapsed": true
365
},
366
"outputs": [],
367
"source": [
368
"# -*- coding: UTF-8 -*-\n",
369
"\n",
370
"# Filename : test.py\n",
371
"# author by : www.runoob.com\n",
372
"\n",
373
"# 用户输入\n",
374
"\n",
375
"x = input('输入 x 值: ')\n",
376
"y = input('输入 y 值: ')\n",
377
"\n",
378
"# 不使用临时变量\n",
379
"# your code here: \n",
380
"\n",
381
"print('交换后 x 的值为: {}'.format(x))\n",
382
"print('交换后 y 的值为: {}'.format(y))"
383
]
384
},
385
{
386
"cell_type": "markdown",
387
"metadata": {
388
"collapsed": true
389
},
390
"source": [
391
"### - 9.编程,找出10000之内的所有完数,并输出该完数及对应的因子。\n",
392
"- 一个数如果恰好等于它的因子之和,这个数就称为“完数”。\n",
393
"- 例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。\n",
394
"\n",
395
"代码如下:"
396
]
397
},
398
{
399
"cell_type": "code",
400
"execution_count": null,
401
"metadata": {
402
"collapsed": true
403
},
404
"outputs": [],
405
"source": [
406
"def wanshu(N):\n",
407
" factors = []\n",
408
" for i in range(1, N):\n",
409
" if N % i == 0:\n",
410
" factors.append(i) # find all factors\n",
411
" if sum(factors) == N:\n",
412
" return True, factors\n",
413
" return False, []\n",
414
"\n",
415
"for i in range(1, 10000): # 请加注释\n",
416
" isW, facs = wanshu(i) # 请加注释\n",
417
" if isW: # 请加注释\n",
418
" print (i, facs)"
419
]
420
},
421
{
422
"cell_type": "markdown",
423
"metadata": {},
424
"source": [
425
"### - 10.摘录网页HTML源码,粘贴到input.txt,统计其中英文字母、空格、数字和其他字符的个数并输出。\n",
426
"\n",
427
"代码如下:"
428
]
429
},
430
{
431
"cell_type": "code",
432
"execution_count": null,
433
"metadata": {
434
"collapsed": true
435
},
436
"outputs": [],
437
"source": [
438
"counts = {\"letter\": 0, \"blank\": 0, \"number\": 0, \"other\": 0}\n",
439
"\n",
440
"f = open('./input_1.txt', 'r') #代码完整且正确,请使用自己准备的文档完成作业\n",
441
"contents = f.readlines()\n",
442
"f.close()\n",
443
"for coni in contents:\n",
444
" tmp = coni.strip()\n",
445
" for ci in tmp:\n",
446
" if ci.isalpha(): # is letter?\n",
447
" counts[\"letter\"] += 1\n",
448
" elif ci.isspace(): # is space?\n",
449
" counts[\"blank\"] += 1\n",
450
" elif ci.isdigit(): # is number?\n",
451
" counts[\"number\"] += 1\n",
452
" else: # other\n",
453
" counts[\"other\"] += 1\n",
454
"for item in counts.items():\n",
455
" print (item[0] + \": \" + str(item[1]))"
456
]
457
},
458
{
459
"cell_type": "markdown",
460
"metadata": {},
461
"source": [
462
"### - 11.在网上摘录一段英文文本(尽量长一些),粘贴到input.txt,统计其中每个单词的词频(出现的次数),并按照词频的顺序写入out.txt文件,每一行的内容为“单词:频次”\n",
463
"\n",
464
"代码如下:"
465
]
466
},
467
{
468
"cell_type": "code",
469
"execution_count": null,
470
"metadata": {
471
"collapsed": true
472
},
473
"outputs": [],
474
"source": [
475
"import re\n",
476
"\n",
477
"f = open('./input_2.txt', 'r') #代码完整且正确,请使用自己准备的文档完成作业\n",
478
"contents = f.read()\n",
479
"f.close()\n",
480
"words = re.findall(r'\\w+', contents)\n",
481
"counts = {}\n",
482
"for wordi in words:\n",
483
" if wordi in counts:\n",
484
" counts[wordi] += 1\n",
485
" else:\n",
486
" counts[wordi] = 1\n",
487
"tmp = sorted(counts.items(), key = lambda item:item[1], reverse = True)\n",
488
"\n",
489
"fw = open('./out.txt', 'w')\n",
490
"for ti in tmp:\n",
491
" fw.write(ti[0] + \": \" + str(ti[1]) + \"\\n\")\n",
492
"fw.close()"
493
]
494
},
495
{
496
"cell_type": "markdown",
497
"metadata": {},
498
"source": [
499
"### - 12.调出字符串'AV is largest Analytics community of India'中每个字母Extract each character\n",
500
"\n",
501
"代码如下:"
502
]
503
},
504
{
505
"cell_type": "code",
506
"execution_count": null,
507
"metadata": {
508
"collapsed": true
509
},
510
"outputs": [],
511
"source": [
512
"import re\n",
513
"result=re.findall(r'\\w','AV is largest Analytics community of India')\n",
514
"print(result)"
515
]
516
},
517
{
518
"cell_type": "markdown",
519
"metadata": {},
520
"source": [
521
"##### 提示:用“\\w“"
522
]
523
},
524
{
525
"cell_type": "markdown",
526
"metadata": {},
527
"source": [
528
"### - 13.获取昨天日期\n",
529
"\n",
530
"代码如下:"
531
]
532
},
533
{
534
"cell_type": "code",
535
"execution_count": null,
536
"metadata": {
537
"collapsed": true
538
},
539
"outputs": [],
540
"source": [
541
"# 引入 datetime 模块\n",
542
"import datetime\n",
543
"def getYesterday(): \n",
544
" today=datetime.date.today() # 请加注释\n",
545
" oneday=datetime.timedelta(days=1) # 请加注释\n",
546
" yesterday=today-oneday # 请加注释\n",
547
" return yesterday\n",
548
" \n",
549
"# 输出\n",
550
"print(getYesterday())"
551
]
552
},
553
{
554
"cell_type": "markdown",
555
"metadata": {},
556
"source": [
557
"##### 提示:以上代码通过导入 datetime 模块来获取昨天的日期"
558
]
559
},
560
{
561
"cell_type": "markdown",
562
"metadata": {},
563
"source": [
564
"### - 14.生成日历\n",
565
"\n",
566
"代码如下:"
567
]
568
},
569
{
570
"cell_type": "code",
571
"execution_count": null,
572
"metadata": {
573
"collapsed": true
574
},
575
"outputs": [],
576
"source": [
577
"# 引入日历模块\n",
578
"import calendar\n",
579
" \n",
580
"# 输入指定年月\n",
581
"yy = int(input(\"输入年份: \"))\n",
582
"mm = int(input(\"输入月份: \"))\n",
583
" \n",
584
"# 显示日历\n",
585
"print(calendar.month(yy,mm))"
586
]
587
},
588
{
589
"cell_type": "markdown",
590
"metadata": {},
591
"source": [
592
"### - 15.最大公约数算法\n",
593
"\n",
594
"代码如下:"
595
]
596
},
597
{
598
"cell_type": "code",
599
"execution_count": null,
600
"metadata": {
601
"collapsed": true
602
},
603
"outputs": [],
604
"source": [
605
"# 定义一个函数\n",
606
"def hcf(x, y):\n",
607
" \"\"\"该函数返回两个数的最大公约数\"\"\"\n",
608
" \n",
609
" # 获取最小值\n",
610
" if x > y:\n",
611
" smaller = y\n",
612
" else:\n",
613
" smaller = x\n",
614
" \n",
615
" for i in range(1,smaller + 1):\n",
616
" if((x % i == 0) and (y % i == 0)):\n",
617
" hcf = i\n",
618
" \n",
619
" return hcf\n",
620
" \n",
621
" \n",
622
"# 用户输入两个数字\n",
623
"num1 = int(input(\"输入第一个数字: \"))\n",
624
"num2 = int(input(\"输入第二个数字: \"))\n",
625
" \n",
626
"print( num1,\"和\", num2,\"的最大公约数为\", hcf(num1, num2))"
627
]
628
},
629
{
630
"cell_type": "markdown",
631
"metadata": {},
632
"source": [
633
"### - 16.任意定义三个数(有整型和浮点型),通过比较判断,输出其最大者。\n",
634
"\n",
635
"代码如下:"
636
]
637
},
638
{
639
"cell_type": "code",
640
"execution_count": null,
641
"metadata": {
642
"collapsed": true
643
},
644
"outputs": [],
645
"source": [
646
"nums = [3, 12.5, 5.562] # input\n",
647
"maxNum = nums[0]\n",
648
"for i in range(1, len(nums)):\n",
649
" # your code here\n",
650
" # your code here\n",
651
"print (\"The maximum value is\", maxNum)"
652
]
653
},
654
{
655
"cell_type": "markdown",
656
"metadata": {},
657
"source": [
658
"### - 17.用list comprehension生成1-20000之间所有能被3整除不能被5整除的数\n",
659
"\n",
660
"代码如下:"
661
]
662
},
663
{
664
"cell_type": "code",
665
"execution_count": null,
666
"metadata": {
667
"collapsed": true
668
},
669
"outputs": [],
670
"source": [
671
"nums = [num for num in range(1, 20001) if num % 3 == 0 and num % 5 != 0]\n",
672
"print nums\n",
673
"# 程序有个小bug,请找出并更正"
674
]
675
},
676
{
677
"cell_type": "markdown",
678
"metadata": {},
679
"source": [
680
"### - 18.练习切片,取出上述列表中前10个数,最后5个数,下标为偶数的数,并把列表逆序。\n",
681
"\n",
682
"代码如下:"
683
]
684
},
685
{
686
"cell_type": "code",
687
"execution_count": null,
688
"metadata": {
689
"collapsed": true
690
},
691
"outputs": [],
692
"source": [
693
"nums = [num for num in range(1, 20001) if num % 3 == 0 and num % 5 != 0]\n",
694
"print (nums[:10]) # 请加注释\n",
695
"print (nums[-5:]) # 请加注释\n",
696
"print (nums[::2]) # 请加注释\n",
697
"print (sorted(nums, reverse = True)) # 请加注释"
698
]
699
},
700
{
701
"cell_type": "markdown",
702
"metadata": {
703
"collapsed": true
704
},
705
"source": [
706
"### -19.定义一个函数,完成一个小任务:对于给定的银行定期利率(输入),计算多少年后可以连本带息翻番。\n",
707
"\n",
708
"代码如下:"
709
]
710
},
711
{
712
"cell_type": "code",
713
"execution_count": null,
714
"metadata": {
715
"collapsed": true
716
},
717
"outputs": [],
718
"source": [
719
"def helper(rates):\n",
720
" n = 1\n",
721
" while True:\n",
722
" if (1 + rates) ** n >= 2:\n",
723
" break\n",
724
" n += 1\n",
725
" print (n, \"years\")\n",
726
"\n",
727
"helper(0.26)"
728
]
729
},
730
{
731
"cell_type": "markdown",
732
"metadata": {
733
"collapsed": true
734
},
735
"source": [
736
"### - 20.九九乘法表\n",
737
"\n",
738
"代码如下:"
739
]
740
},
741
{
742
"cell_type": "code",
743
"execution_count": null,
744
"metadata": {
745
"collapsed": true
746
},
747
"outputs": [],
748
"source": [
749
"# 九九乘法表\n",
750
"for i in range(1, 10):\n",
751
" for j in range(1, i+1):\n",
752
" print('{}x{}={}\\t'.format(i, j, i*j), end='')\n",
753
" print()"
754
]
755
},
756
{
757
"cell_type": "markdown",
758
"metadata": {},
759
"source": [
760
"----------\n",
761
"\n",
762
"## 更多福利\n",
763
"\n",
764
"微信扫描下面二维码,加404妹纸,可以获取更多福利哦!\n",
765
" ![](http://osloyi5le.bkt.clouddn.com/%E7%BD%91%E6%98%93%E4%B8%AA%E4%BA%BA%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg)"
766
]
767
}
768
],
769
"metadata": {
770
"kernelspec": {
771
"display_name": "Python 3",
772
"language": "python",
773
"name": "python3"
774
},
775
"language_info": {
776
"codemirror_mode": {
777
"name": "ipython",
778
"version": 3
779
},
780
"file_extension": ".py",
781
"mimetype": "text/x-python",
782
"name": "python",
783
"nbconvert_exporter": "python",
784
"pygments_lexer": "ipython3",
785
"version": "3.5.2"
786
}
787
},
788
"nbformat": 4,
789
"nbformat_minor": 2
790
}