这两个任务很简单,按照提示来就行,不用心急。
1、第一个问题
def BMI():
m = eval(input('请输入您的体重(单位:公斤 kg)\n>>[').strip())
h = eval(input('请输入您的身高(单位:米 m)\n>>[').strip())
bmi = m / h ** 2
if bmi < 18:
judge = '偏瘦'
elif 18 <= bmi <= 24:
judge = '健康'
else:
judge = '偏胖'
return round(bmi,2), judge
上面的函数可以实现两个功能:计算BMI指数和作出身体胖瘦水平判断。
这一点可以从return语句中清晰地发现,变量bmi用于储存计算好的BMI指数,变量judge用于储存身体状况。(使用round函数保留bmi值的两位小数,以便用户识别)
函数没有参数输入,取而代之的是input函数输入。
下面这两行是对BMI函数的调用。可以让使用者清晰地知道计算结果。
bmi, judge = BMI()
print(f'经过计算,您的BMI指数为 {bmi} 。\n您可能的身体状况为 {judge} 。')
2、第二个问题
def trans(intab, outab, word): #intab与outab是长度相等、一一对应的明文、密文
tab = str.maketrans(intab, outab) #使用maketrans方法获取密表
code = word.translate(tab) #对输入的明文进行加密
return code
使用上面的函数对明文加密。其方法是maketrans函数和translate函数,其原理是通过用户指定的一一对应的明文与密文创建密表(加密表),再识别和替换给定文字。
如果需要解密同一类型的密码,则将明文与密文交换即可,如下所示:
def de(intab, outab, code):
tab = str.maketrans(outab, intab)#在这一步中将之前加密时使用的明文与密文交换
word = code.translate(tab)
return word
或者直接在调用函数时将明文与密文交换。
调用与输出示例:
#调用加密函数的语句
print(trans('abcd','1234','aabbccdddcbaabcd'))
#对应输出为:1122334443211234
#调用解密函数的语句
print(de('1234','abcd','1122334443211234'))
#对应输出为:aabbccdddcbaabcd
使用上面的两个函数需要自定义密文和对应明文,并且注意,明文与密文一一对应,长度相等,每一个密文字符只对应唯一的明文字符,否则会出现译文错误。
另附:吐槽一下,其实maketrans和translate方法只适合初探密码的新手,加密过于单一和简单,解密也极容易受干扰。但这两个方法可以带给初学者加密和解密最初的感受,不失为一种有趣的体验。
没啥好指导的吧~题目说得这么直白了。加密方式还是自定义的😂