数字转换
TempStr=['零','一','二','三','四','五','六','七','八','九']
number=input()
for i in number:
a=eval(i)
print(TempStr[a],end="")
新学的东西
1.循环遍历列表
2.输出不换行的end=""
温度转换
题目描述
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度采用大写字母C开头,温度可以是整数或小数,如:C12.34指摄氏度12.34度;
(2) 输入输出的华氏度采用大写字母F开头,温度可以是整数或小数,如:F87.65指华氏度87.65度;
(3) 不考虑异常输入的问题,输出保留小数点后两位;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
答案
tempStr=input()
if tempStr[0] in ['F','f']:
C=(eval(tempStr[1:])-32)/1.8
print("C{:.2f}".format(C))
elif tempStr[0] in ['C','c']:
F=eval(tempStr[1:])*1.8+32
print("F{:.2f}".format(F))
else:
print("输入格式错误")
新学的东西
切片的新用法《字符串》[x:] 可以把字符串x开始往后的字符串取出来
《字符串》[:y] 可以把字符串从0开始到y-1位上的字符取出
《字符串》[M:N:K] k表示步长
eg1:“0123456789”[1:8:2]取得的字符串为"1357"
逆序字符串eg2:“0123456789”[ : :-1]
三次方格式
题目描述
获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。
输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
答案
b=eval(input())**3
c=str(b)
if len(c)>20:
print("{:}".format(b))
else:
print("{:}".format(b).center(20,'-'))
新学的东西
Python中也提供方法,方法是面向对象编程一个专有名词,在面向过程中,我们常常称之为函数。
那么方法最重要的特点就是a.b的风格,其中a是对象Object,b是方法Method,熟悉C语言的盆友都知道,c语言中不存在对象自然没有这样的写法。
现在开始,比如上面答案中的str()和len()都是函数,如果想用
str(a).len(a)# Not right。函数是没法用面向对象的风格来写的
b=str(a)
c=len(b)#这样才能求出字符串a的长度
恺撒密码
题目描述
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文: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()获得输入。
答案
def encryption(strtext, n):
cipher = []
for i in range(len(strtext)):
if strtext[i].islower():
if ord(strtext[i]) < 123-n:
c = chr(ord(strtext[i]) + n)
cipher.append(c)
else:
c = chr(ord(strtext[i]) + n - 26)
cipher.append(c)
elif strtext[i].isupper():
if ord(strtext[i]) < 91-n:
c = chr(ord(strtext[i]) + n)
cipher.append(c)
else:
c = chr(ord(strtext[i]) + n - 26)
cipher.append(c)
else:
c = strtext[i]
cipher.append(c)
cipherstr = ('').join(cipher)
return cipherstr
#获得用户输入的明文
plaintext = input()
ciphertext = encryption(plaintext, 3)
print(ciphertext)
新学的东西
join方法
str1.join(str2) 用str1的东西把str2除最后一个元素外分割开
例子
strtext1=['hello','world']
print( "\\".join(strtext1))
>>>hello\world
strtext2='hello world'
print("\\".join(strtext2))
>>>h\e\l\l\o\ \w\o\r\l\d
'因为列表字典和元组的元素是相同的,就不做展示了'
'strtext1是列表类型,strtext2是字符串类型'
字符串格式化输出
槽并没有对应的字符串格式,而输出字符串有下面几种方法
strtext1='hello world'
'第1种方法'print(strtext1)
'第2种方法'print('hello'+' '+'world')
'第3种方法'print('%s'%(strtext1))'''字符串输出新学形式'''
'第4种方法'print('{0}'.format(strtext1))'''str.format()形式'''
join方法与str()函数的不同
strtext1=['hello','world']
print( "\\".join(strtext1))>>>hello\world
print(str(strtext1))>>>['hello', 'world']
str() 函数返回该对象的string形式,如果该object已经是string则原样返回
strtext2='hello world'
print(str(strtext2))
>>>hello world
而像strtext1那样的话则把整个变为string形式
join方法则是把每个元素分割形成一个新的字符串,仔细比对例子1
join方法注意点
今天做了一个水仙花数的题,无意间发现了join的一个注意事项
思路:把水仙花数加到列表中,然后用join方法来完成最后的输出结果
list=[]
for i in range(100,1000):
sum=0
strtext=str(i)
for j in range(3):
strnum=strtext[j]
sum=sum+pow(eval(strnum),3)
if sum==i:
'''list.append(i) 这样会出现TypeError异常,
在后面使用join方法的时候'''
list.append(str(i))
print(",".join(list))
原来join方法是字符串处理方法,收到的参数也应该是str类型,直接append(i)是不行的需要把i的str类型str(i)加到list里才可以。