练习3: 基本数据类型 (第3周)

平方值格式化

描述

获得用户输入的一个整数N,计算N的平方值;结果采用宽度20字符方式居中输出,空余字符采用减号(-)填充。

如果结果超过20个字符,则以结果宽度为准。

 

输入输出示例

  输入 输出
示例 1
10
--------100---------

 mooc上老师讲的,格式控制就行:

a=int(input())
a*=a
print("{:-^20}".format(a))

同符号数学运算

 

描述

读入一个整数N,分别计算如下内容:

1. N的绝对值;

2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。

将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。

 


输入

示例1:100

 


输出

示例1:100 110 90 1000


题解:先开一个变量把n最开始的值记录下来,然后对n行进绝对值运算,然后进行三种操作,分别给a,b,c,我们判断最开始n的正负号,因为记录了x记录了n最开始的正负,然后对a,b,c取绝对值和x的符号相同就ok

n=int(input())
x=n  #把n最开始的值记录下来,待会判断n的正负,不然待会n取绝对值可能改变n的值
n=abs(n)
a=n+10
b=n-10
c=n*10
if x>=0:
    print(n,abs(a),abs(b),abs(c))
else:print(n,-abs(a),-abs(b),-abs(c))

天天向上的力量 III

描述

一年365天,以第1天的能力值为基数,记为1.0。

当好好学习时,能力值相比前一天提高N‰;当没有学习时,能力值相比前一天下降N‰。

每天努力或放任,一年下来的能力值相差多少呢?其中,N的取值范围是0到100,N可以是小数,假设输入符合要求。

获得用户输入的N,计算每天努力和每天放任365天后的能力值及能力间比值,其中,能力值保留小数点后2位,能力间比值输出整数,输出结果间采用英文逗号分隔。

使用input()获得N。

 


输入

示例1:

1

 


输出

示例1:

1.44,0.69,2 

n=float(input())/1000
a=pow(1+n,365)
b=pow(1-n,365)
print("{:.2f},{:.2f},{}".format(a,b,int(a//b)))

星号三角形 I

 

描述

读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:

第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。

 


输入

示例1:3

 


输出

示例2:

 * 
***

 

题解:可以看出规律每行的星星个数是2*n-1,然后行数的规律是n//2+2。其余就按照输出格式控制就行。
n=eval(input())
for i in range(1,n//2+2):
    a='*'*(2*i-1)
    print(a.center(n," "))

恺撒密码 I

 

描述

凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:

原文: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

假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。

 


输入

示例1: python is good


输出

示例1: sbwkrq lv jrrg

 题解:因为c的语法习惯了,来写这种,报错的到哭,不过最后还是用以前c的思维用python写出来了:有空格就输出空格,其余的我们先把每个字符转换成字符编码,和'a'字符编码的差加上3,mod26,因为不能想c那样很方便的可以直接字符相减就能得到差值,就要这样写,不然模电后的字符不是a到z的,然后mod后,在加回去'a'的编码值,就ok了。

另一种写法就很python了,判断最后的字母是不是x,y,z因为不能取mod,会报错,我也不知道怎么回事,在学python没好久,我们就手动判断,是不是加上3会超过z,超过的应该重新从a开始。所以这里处理一下,就是编码减去23就行。然后不超的字符直接加3.
代码一:
s=input()
for i in range(len(s)):
    if s[i]==' ':
        print(s[i],end='')
    else:
      print(chr((ord(s[i])-ord('a')+3)%26+ord('a')),end='')
代码二:
s=input()
for i in range(len(s)):
 if s[i]==' ':
    print(s[i],end='')
 elif s[i] in ['x','y','z']:
     print(chr(ord(s[i])-23),end='')
 else:
     print(chr(ord(s[i])+3),end='')





 



猜你喜欢

转载自blog.csdn.net/memory_qianxiao/article/details/80231630