1.同符号数学运算
读入一个整数N,分别计算如下内容:
- N的绝对值;
- N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。
- 将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。
方法
num = eval(input())
a = abs(num)
b = a + 10
c = a - 10
d = a * 10
if num < 0: # 若原符号为负,先绝对值后加符号,保证均同号
b = -abs(b)
c = -abs(c)
d = -abs(d)
elif num >= 0: # 若原符号为正,绝对值,保证均同号
b = abs(b)
c = abs(c)
d = abs(d)
print('{} {} {} {}'.format(a,b,c,d))
2.三角函数计算
根据下面公式计算并输出x的值,a和b的值由用户输入,括号里的数字是角度值, 圆周率的值使用数学常数math.pi。
输入格式: 输入包括两行, 每行一个数字。
输出格式: 一个数值
方法
import math
a = eval(input())
b = eval(input())
c = math.radians(60) # 角度值转换成弧度值
d = 2*a*math.sin(c)*math.cos(c) # math.sin(x)中x应为弧度值
x = (math.pow(d,0.5)-b)/(2*a)
print(x)
3.棋盘放米
相传古代印度国王舍罕要褒赏他的聪明能干的宰相达依尔 (国际象棋发明者),问他需要什么,达依尔回答说:“国王只要在国际象棋的棋盘第一个格子里放一粒麦子,第二个格子里放两粒,第三个格子里放四粒,按此比例以后每一格加一倍,一直放到64格(国际象棋棋盘是8×8=64格),我就感恩不尽,其他的我什么也不要了,”国王想:“这有多少,还不容易!”让人扛来一袋小麦,但不到一会儿全用没了,再来一袋很快又没有了,结果全印度的粮食全部用完还不够,国王纳闷,怎样也算不清这笔账,请你帮国王计算一下,共需多少粒麦子,写出程序。
方法
sum = 0
for i in range(64):
a = pow(2,i) #每格的个数
sum += a
print(sum)
4.数列求和
给定某数字a(1≤a≤9)以及非负整数n(0≤n≤100000),求数列之和sum=a+aa+aaa+⋯+aa⋯a(n个a)。例如a=2, n=3时,sum=2+22+222=246。
- 输入有两行:第一行输入数字a , 第二行输入非负整数n
- 输出格式: 输出其N项数列之和S的值。
方法
a = eval(input())
b = eval(input())
num = 0
sum = 0
for i in range(b):
c = a * pow(10,i) # 每一个数的位数
num = num + c # 每一个数
sum = sum + num
print(sum)
5.分类统计字符
用户输入一个字符串,分别统计其中小写字母、大写字母、数字、空格和其他字符的个数,并在一行内输出小写字母、大写字母、数字、空格和其他字符的个数。
输入格式 : 输入一个字符串
输出格式 : 在一行内输出小写字母、大写字母、数字、空格和其他字符的个数
str = input()
upper = 0
lower = 0
digit = 0
space = 0
other = 0
for i in str:
if i.islower(): # 小写
lower = lower + 1
elif i.isupper(): # 大写
upper = upper + 1
elif i.isnumeric(): # 数字
digit = digit + 1
elif i.isspace(): # 空格
space =space + 1
else: # 其他
other = other + 1
print(lower,upper,digit,space,other)
6.黑客语解密
黑客语(Leet)是从网络发展起来的一种文字书写方式。通常将英语中的字母替换为数字和特殊符号。这种方式被很多黑客组织所使用。由于具有隐密性,所以它也广泛被用于密码中。使用Leet书写的密码,不会增加密码记忆的复杂度,但却可以提高密码的强度。常见的转化规律有, 。一个纯字母的密码就转化为字母、数字构成的复杂密码了。
table = ‘’.maketrans(before, after),这条语句可以创建映射表,str1.translate(table)语句可以将table中的字符按映射表中的顺序进行替换。
替换表如下:
0 1 3 4 5 6 7
o i e a s g t
写一个程序,用于破解一个加密的字符串。M4k3 G006l3 Y0ur H0m3p463!
方法
str1 = input()
before = '0134567'
after = 'oieasgt'
table = ''.maketrans(before, after) #创建映射表
print(str1.translate(table))
7.密码强度判断
用户输入一个字符串做为密码,判断密码强度,规则为:密码长度小于8弱密码,密码长度大于等于8且包含至少2种字符为中等强度、密码包含3种字符为强、包含全部4种字符为极强。
提示:
string.digits 可返回’0123456789’
string.ascii_lowercase 可返回’abcdefghijklmnopqrstuvwxyz’
string.ascii_uppercase 可返回’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
string.punctuation 可返回’!"#$%&’()*+,-./:;<=>?@[\]^_`{|}~’
- 输入格式 : 输入一个字符串
- 输出格式: 密码强度的判断结果,分:弱、中、强、极强,共四种
方法
import string
a = input()
q = w = e = r = 0
for i in a:
if i in string.digits:
q = 1
elif i in string.ascii_lowercase:
w = 1
elif i in string.ascii_uppercase:
e = 1
elif i in string.punctuation:
r = 1
x = q + w + e + r
if len(a) < 8:
print('弱')
else:
if x < 2:
print('弱')
if x == 2:
print('中')
elif x == 3:
print('强')
elif x == 4:
print('极强')