任务:构造-20到50摄氏度的摄氏-华氏温度对应表。
本关的摄氏温度值都为整数。温度表中的温度跨度为1度。数字与—之间有一个空格。
输出格式:
摄氏度—华氏度
-20 —> -4.000000
-19 —> -2.200000
···
···
50 —> 122.000000
min_temp = -20 # 最小温度值
max_temp = 50 # 最大温度值
c = -20
print("摄氏度--->华氏度") # 打印出表的第一格
while c<51:
f = c*1.8+32
print("{} ---> {:.6f}".format(c,f))
c = c + 1
执行结果:
D:\网络安全\Python\py_code>python educ.py
摄氏度--->华氏度
-20 ---> -4.000000
-19 ---> -2.200000
-18 ---> -0.400000
-17 ---> 1.400000
-16 ---> 3.200000
-15 ---> 5.000000
-14 ---> 6.800000
-13 ---> 8.600000
-12 ---> 10.400000
-11 ---> 12.200000
-10 ---> 14.000000
-9 ---> 15.800000
-8 ---> 17.600000
-7 ---> 19.400000
-6 ---> 21.200000
-5 ---> 23.000000
-4 ---> 24.800000
-3 ---> 26.600000
-2 ---> 28.400000
-1 ---> 30.200000
0 ---> 32.000000
1 ---> 33.800000
2 ---> 35.600000
3 ---> 37.400000
4 ---> 39.200000
5 ---> 41.000000
6 ---> 42.800000
7 ---> 44.600000
8 ---> 46.400000
9 ---> 48.200000
10 ---> 50.000000
11 ---> 51.800000
12 ---> 53.600000
13 ---> 55.400000
14 ---> 57.200000
15 ---> 59.000000
16 ---> 60.800000
17 ---> 62.600000
18 ---> 64.400000
19 ---> 66.200000
20 ---> 68.000000
21 ---> 69.800000
22 ---> 71.600000
23 ---> 73.400000
24 ---> 75.200000
25 ---> 77.000000
26 ---> 78.800000
27 ---> 80.600000
28 ---> 82.400000
29 ---> 84.200000
30 ---> 86.000000
31 ---> 87.800000
32 ---> 89.600000
33 ---> 91.400000
34 ---> 93.200000
35 ---> 95.000000
36 ---> 96.800000
37 ---> 98.600000
38 ---> 100.400000
39 ---> 102.200000
40 ---> 104.000000
41 ---> 105.800000
42 ---> 107.600000
43 ---> 109.400000
44 ---> 111.200000
45 ---> 113.000000
46 ---> 114.800000
47 ---> 116.600000
48 ---> 118.400000
49 ---> 120.200000
50 ---> 122.000000
任务:编写代码实现凯撒密码加密,密码只能为大写字母,原密码和偏移量都通过input函数获取。
需要考虑边界效应,如果密码超过了Z,则重新用A、B、C…表示。
需要用到的内置函数
chr 函数
chr(x)
使用一个整数x
作为参数,返回参数x
对应的 ASCII 码字符
ord 函数
ord 函数是 chr 函数的配对函数,ord(ch)
使用一个字符ch
作为参数,返回ch
对应的 ASCII 的十进制数值。
key = str(input("please input the key:"))
p = int(input("please input the offset:"))
i = 0
chkey = ""
while i<len(key):
#偏移后的ASCII
num = ord(key[i])+p
#若偏移后的大于90,90就是Z,就要从A开始继续轮回,即考虑边界效应
if num > 90:
num = num-90+64
string = chr(num)
chkey += string
i = i+1
print(chkey)
执行结果:
D:\网络安全\Python\py_code>python eee.py
please input the key:EICHI
please input the offset:8
MQKPQ
D:\网络安全\Python\py_code>python eee.py
please input the key:ABCD
please input the offset:3
DEFG
任务:使用while循环打印出九九乘法表。注意每行算式间有一个空格,每一行的末尾有一个空格,乘号使用的是 x。
说明:print(“Hello Python”, end="\n"),print()函数默认带换行参数,将其等于空就不会换行了
i = 1
while i<10:
j = 1
while j<(i+1):
res = i*j
print("{}x{}={} ".format(i,j,res),end="")
j+=1
i+=1
print()
执行结果:
D:\网络安全\Python\py_code>python educ.py
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
任务:分别统计给定的列表中奇数和偶数的个数。
对range函数的说明
range()函数的使用
range(n) 表示一个区间范围的递增的数据 [0, n)
range(m, n) 表示一个区间范围,[m, n)的区间
range(m, n, s) 第三个值表示步长step帮助文档
>>> help(range) Help on class range in module builtins: class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range object | | Return an object that produces a sequence of integers from start (inclusive) | to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. | start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. | These are exactly the valid indices for a list of 4 elements. | When step is given, it specifies the increment (or decrement). 翻译一下 >>>帮助(范围) 模块内置中有关类范围的帮助: 类范围(对象) |范围(停止)->范围对象 |范围(开始,停止[,步骤])->范围对象 | |返回一个对象,该对象从一开始就生成一个整数序列(包括) |一步一步地停止(排除)。范围(i,j)产生i,i+1,i+2,…,j-1。 |开始默认为0,停止被忽略!范围(4)产生0、1、2、3。 |这些正是4个元素列表的有效索引。 |当给定step时,它指定增量(或减量)。
"""
任务:分别统计给定的列表中奇数和偶数的个数。
"""
list_value = [1, 2, 18, 7, 33, 22, 1045, 98, 78, 36, 10, 111, 105, 4320, 1014, 50, 63, 15, 18, 910, 2010, 3201, 2501, 25, 120, 320]
ji = 0
ou = 0
for i in range(len(list_value)):
if list_value[i]%2 == 0:
ou +=1
else:
ji += 1
print("奇数共{}个,偶数共{}个".format(ji,ou))
执行结果;
D:\网络安全\Python\py_code>python educ.py
奇数共11个,偶数共15个
任务:使用 for 循环计算某个正整数的阶乘,这个数通过 input 函数获取。
如果输入的数不为正整数,则输出“输入数据不合法”。
注意:0 的阶乘为 1。
num = int(input())
times = 1
flag = 1
if num < 0:
flag = 0
for i in range(1,num+1):
flag = 1
if num == 0:
times = 1
break
else:
times *= i
if flag == 1:
print("{}的阶乘为{}".format(num,times))
else:
print("输入数据不合法")
执行结果:
D:\网络安全\Python\py_code>python educ.py
5
5的阶乘为120
D:\网络安全\Python\py_code>python educ.py
4
4的阶乘为24
D:\网络安全\Python\py_code>python educ.py
0
0的阶乘为1
D:\网络安全\Python\py_code>python educ.py
-7
输入数据不合法
“”"
任务:判断给定的整数是否是素数。该整数是通过 input 获取。如果输入的数小于1,则输出“输入数据不合法”。
“”"
什么是素数?
素数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数
num = int(input())
i = 2
flag = 1
if num < 1:
print("输入数据不合法")
while i 0:
print("是素数")
执行结果;
D:\网络安全\Python\py_code>python educ.py
15
不是素数
D:\网络安全\Python\py_code>python educ.py
11
是素数
D:\网络安全\Python\py_code>python educ.py
0
输入数据不合法
“”"
任务:模仿银行输入的密码出错 3 次,而锁定账户(三次重新输入密码的机会),
请编写代码实现该功能。密码通过 input 函数获取。正确密码为"123"。
如果密码错误,输出一次“密码错误”,如果密码正确,输出“密码正确”。
“”"
flag = 1
for i in range(3):
password = str(input())
if password == "123":
print("密码正确")
break
else:
print("密码错误")
执行结果:
D:\网络安全\Python\py_code>python educ.py
123
密码正确
D:\网络安全\Python\py_code>python educ.py
345
密码错误
567
密码错误
678
密码错误
D:\网络安全\Python\py_code>python educ.py
345
密码错误
123
密码正确
“”"
任务:计算给定列表中所有正数的和。
“”"
list_num = [-5, 0, 5, 8, 101, -16, -15, 56, 20, -32, 20, 0, -19, 50, 100, 205, 302, 1901, 302]
sum = 0
for i in range(0,len(list_num)):
if list_num[i] <= 0:
continue
else:
sum += list_num[i]
print("正数和为{}".format(sum))
执行结果:
D:\网络安全\Python\py_code>python educ.py
正数和为3070
“”"
任务:给定一个正整数 n,统计小于等于 n 的正奇数的个数。n 通过 input 获取。如果输入的数据小于或者等于 0,则输出“输入数据不合法”。
“”"
num = int(input())
res = 0
flag = 0
#注意:当num小于0时,是不符合range()函数的可迭代对象的,即不进入for循环中
for i in range(1,num+1):
if i%2 == 0:
continue
res += 1
flag = 1
if flag == 0:
print("输入数据不合法")
else:
print("正奇数个数为{}".format(res))
执行结果:
D:\网络安全\Python\py_code>python educ.py
15
正奇数个数为8
D:\网络安全\Python\py_code>python educ.py
-5
输入数据不合法
D:\网络安全\Python\py_code>python educ.py
100
正奇数个数为50
相关知识
针对本关任务,我们可以直接使用循环结构和分支结构语句相配合完成,不过,在这里,将介绍 for-else 语句来完成本关任务。
for-else
for-else 语句是 for 循环的一种,它和 break 语句一起使用时才能显示出 else 的作用。下面给出了两个使用 for-else 的例子及其执行结果。
for i in range(10):
if i == 5:
print( 'found it! i = %s' % i)
else:
print('not found it')
执行结果:
found it! i = 5
not found it
这段代码中,在i=5时使用了break结束了循环
for i in range(10):
if i == 5:
print( 'found it! i = %s' % i)
break
else:
print('not found it')
执行结果:
found it! i = 5
从上述两段代码的运行结果可知,第一段代码并没有使用 break 语句,循环是完整的进行完了的,所以 else 语句中的代码运行了,而在第二段代码中,在 i=5 时使用了 break 结束了循环,所以 else 语句中的代码并没有执行。可以发现,如果循环在运行过程中被中断,则 else 语句不会执行;只有当循环完整的运行结束,else才会去执行。
“”"
任务:给定一个整数 n,判断 n 以内的正数是否含有水仙花数,n 通过 input 获取;
如果有,输出“有水仙花数”,如果没有,则输出“没有水仙花数”。
水仙花数:一个 3 位的整数,它的每个位上的数字的 3 次幂之和等于它本身。
“”"
from math import *
n = int(input())
#由于水仙花数是三位的整数,所以范围限制在了100-999;所以for循环从100开始
for i in range(100,n):
gewei = i%100%10
shiwei = i%100//10
beiwei = i//100
res = pow(gewei,3) + pow(shiwei,3) + pow(beiwei,3)
if res == i:
print("有水仙花数")
#break使循环中断后将不会执行else语句
break
else:
#当for循环完整的执行完成后,即没有发现水仙花数,就会执行else语句
print("没有水仙花数")
执行结果:
D:\网络安全\Python\py_code>python educ.py
123
没有水仙花数
D:\网络安全\Python\py_code>python educ.py
800
有水仙花数
“”"
任务:给定一个正整数 n,这个正整数通过 input 获取,统计 2 到 n 的素数个数是否超过了 10 个。
如果超过了 10 个,则输出“素数数量超过10个”,如果少于 10 个,则输出“素数数量少于10个”,如果输入的数是 0 或 1,则输出“输入数据不合法”。
“”"
n = int(input())
#add用于统计2-n间素数的和
add = 0
#判断输入是否合法
if n == 0 or n == 1:
print("输入数据不合法")
else:
#num用于迭代2到输入的数字
for num in range(2,n+1):
if num == 2:
add += 1
else:
#内层循环用于统计,2-n中每一个数字是不是素数
for i in range(2,num):
#素数是不能被整除的,,如果可以被整除,肯定不是素数
if (num%i) == 0:
break
else:
add += 1
if add > 10:
print("素数数量超过10个")
break
else:
print("素数数量少于10个")
执行结果:
D:\网络安全\Python\py_code>python educ.py
30
素数数量少于10个
D:\网络安全\Python\py_code>python educ.py
57
素数数量超过10个
D:\网络安全\Python\py_code>python educ.py
0
输入数据不合法
D:\网络安全\Python\py_code>python educ.py
60
素数数量超过10个