1.读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
初次代码:
num=eval(input())
for i in range(int((num+1)/2)):
str="*"*(2*i+1)
print("{:^num}".format(str))
编译器报错:
print("{:^num}".format(str))
ValueError: Invalid format specifier* 无效的格式说明符
检查发现槽在使用时,槽得宽度不能为变量,必须是一个确定的数,输入3,将槽宽改为3可以正常运行。故一般需要将字符串指定宽度时,一般使用使用其内部的格式化函数,而不是使用槽宽控制
对于"{:^num}" ,【:】引导的槽中的·符号必须为特定的控制字符,系统无法识别num,在双引号里,num不是变量,而是格式控制字符
改进后的程序如下:
num=eval(input())
for i in range(int((num+1)/2)):
str="*"*(2*i+1)
print("{}".format(str.center(num)))
输出效果:
2 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入
s = input()
t = ""
for c in s:
if 'a' <= c <= 'z':
t += chr(ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
elif 'A' <= c <= 'Z':
t += chr(ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
else:
t += c
print(t)