目录
1.数字金额转换为中文大写金额
2.恺撒密码
3.大小写转换
1.数字金额转换为中文大写金额
描述:
编写一函数,将数字金额转换为中文大写金额。设最高位考虑到亿,最低位考虑到分(如:数字金额为1023.445,转换为中文大写金额为:壹仟零佰贰拾叁元肆角伍分)。输入:一个数字金额(如:1234.5),输出:中文大写金额(壹仟贰佰叁拾肆元伍角零分)。
输入输出示例:
|
输入 |
输出 |
示例 |
1023.445 1234.5 123.45 123456789.03 |
壹仟零佰贰拾叁元肆角伍分 壹仟贰佰叁拾肆元伍角零分 壹佰贰拾叁元肆角伍分 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元零角叁分 |
num = ('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾')
s = ('分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿')
n = input() # 输入数字
x = n.split(".", 1) # 将整数和小数分开
L = x[0] # 整数部分
R = x[1] # 小数部分
l, r = len(L), len(R)
i, j = 0, 0
str1, str2 = '', ''
while i < l: # 对整数部分从右往左遍历
m = num[eval(L[l-i-1])]+s[i+2]
str1 = m+str1
i += 1
while j < r: # 对小数部分从左往右遍历
n = num[eval(R[j])]+s[1-j]
str2 = str2+n
j += 1
if j > 1:#如果R的长度超过2,跳出程序
break
if r < 2:
str2 = str2+"零分"
st = str1+str2
print(st)
这个方法有点复杂,不是很容易理解
下面我们来看另一种方法:
import math
str1 = ('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')
str2 = ('分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿')
n = input() # 输入数字
num = str(math.floor(eval(n)*100)) # 输入内容*100后向下取整,再转为字符串
num = num[::-1] # 反转字符串
i, st, m = 0, '', len(num)
while i < m: # 控制循环次数
x = str1[eval(num[i])]+str2[i]
st = x+st
i += 1
print(st) # 输出
整数部分和小数部分不用拆开,用eval(n)*100,然后向下取整,把它看做一个整体,从右往左,就从'分', '角', '元', ……
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
假设用户可能使用的输入仅包含西文字母,即英文大小写字母a~zA~Z和特殊字符,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
代码:
"""
describe:假设用户可能使用的输入仅包含西文字母,即英文大小写字母a~zA~Z和特殊字符,
请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中特殊字符不进行加密处理。
"""
plain_code = input("请输入原文字符:")
for p in plain_code:
# ord():Return the Unicode code point for a one-character string.
# chr():Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
if ord("a") <= ord(p) <= ord("z"): # 小写
print(chr(ord("a") + (ord(p) - ord("a") + 3) % 26), end='')
elif ord("A") <= ord(p) <= ord("Z"): # 大写
print(chr(ord("A") + (ord(p) - ord("A") + 3) % 26), end='')
else: # 非字母
print(p, end='')
# 输入:python is Good!
# 输出:sbwkrq lv Jrrg!
示例:
输入: python is GOOD!
输出: sbwkrq lv JRRG!
3.大小写转换
描述
编写程序,用户输入一个字符串,将其中小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式
一个字符串
输出格式
输入字符串中的字母大小写翻转
输入输出示例
|
输入 |
输出 |
示例 1 |
asdHJKL879 |
ASDhjkl879 |
代码:
方法1:
import string
str1 = input()
for i in str1:
if i in string.ascii_lowercase:
print(i.upper(),end='')
elif i in string.ascii_uppercase:
print(i.lower(),end='')
else:
print(i,end='')
可以使用 Python 内置的字符串方法 upper()
和 lower()
分别将字符串转换为大写和小写形式,示例如下:
s = 'Hello, World!'
print(s.upper()) # 输出 HELLO, WORLD!
print(s.lower()) # 输出 hello, world!
其中,upper()
方法将所有字母转换为大写形式,lower()
方法将所有字母转换为小写形式。
另外,如果需要将字符串的首字母大写或小写,可以使用 capitalize()
和 title()
方法,示例如下:
s = 'hello, world!'
print(s.capitalize()) # 输出 Hello, world!
print(s.title()) # 输出 Hello, World!
其中,capitalize()
方法将字符串的首字母转换为大写形式,title()
方法将每个单词的首字母都转换为大写形式。
2022/3/14