(1)编写一个函数,参数为一个字符串,返回值为字符串长度以及字符串里面的大写字母,小写字母和数字的个数,共4个数字。
def str_c(str):
lenth = len(str)
number = 0
big_word = 0
small_word = 0
for c in str:
c = ord(c) #使用ord函数找出字符对应的ascii码
if(48<=c<=57):
number += 1
elif(65<=c<=90):
big_word += 1
elif(97<=c<=122):
small_word +=1
return lenth,big_word,small_word
str = input("请输入一个字符串")
lenth,big_word,small_word = str_c(str)
print(f"{str}的长度是{lenth},其中有{big_word}个大写字母,有{small_word}个小写字母")
(2)如果一个字符串正着读和反着读都一样,那它就是回本串。请写一个函数,参数为一个字符串,使用for循环,返回这个字符串是否为回文串。
def str_c(str):
for i in range(0,len(str)//2):
if(str[i] != str[-1-i]):
return "该字符串不是回文数"
else:
return "该字符串是回文数"
str = input("请输入一个字符串")
s = str_c(str)
print(s)
(3)编写一个函数,输入不定长参数,将其中是整形的全部相加,忽略非整形的参数。
def add(*args):
result = 0
for ch in args: #遍历args
if isinstance(ch, int): #使用isinstance函数判断ch是否为整型数
result += ch
return result
print(add(1, 2, 3, 3.2, 78.3,'a',45))
(4)编写函数实现一个10进制数向n进制数之间的转换,其中n的取值范围为2~20。如果输入的目标进制n的值超过10,则使用字母来表示,字母为a~z或A~Z。
c = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K') #使用元组做字母索引
#使用短除法求进制
def num_conversion(num,n):
d = [] #创建空元组,用来保存值,返回该元组
while(1):
d += c[num%n] #求余数,放入列表
num = int(num/n) #更新自己
if(num == 0 ): #判断自己
break
d.reverse() #需要将列表倒叙
return d
num,n = input("请分别输入需要转换的数字和需要转化成的进制,以空格做分割\n").split()
num = int(num) #字符串转整型
n = int(n)
print(num_conversion(num,n))
(5)已知1800年1月1日是星期三,要求编写程序根据用户键盘输入的年份(≥1800)和月份,输出当月月历。
year,mon = input("请输入年份和月份,以空格做分割\n").split()
year = int(year) #字符串转整型
mon = int(mon)
day_num = 0 #该变量记录1800年一月一日到输入年月一号的天数
month_day = [31,28,31,30,31,30,31,31,30,31,30,31] #该列表记录每个月的天数(平年)
day_list=[None]*38 #day_list一共35个元素,用于保存日历数据
for i in range(0,35):
day_list[i] = " " #使用" "字符填充day_list
for i in range(1800,year):
if (i % 4 == 0 and i % 100 != 0) or (i % 400 == 0):
day_num += 366
else:
day_num += 365
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
month_day[1] = 0; #如果当前年是闰年则改变2月天数
for i in range(1,mon):
day_num += month_day[i] #计算经过了多少天
week = (day_num+3)%7
#print(day_num)
#print(week) #计算是星期几,该变量表示填充列表时从哪里开始填充
for i in range(1,31+1): #填充列表
day_list[week+i] = i
#计算第一天是星期几
print(f"您输入的年份是: {year}")
print(f"您输入的年份是: {mon}")
print(f"---------------------------------")
print(f"Sun Mon Tue Wed Thu Fri Sat")
for i in range(1,35): #0元素舍去,整个表是37个元素
print("{:<5}".format(day_list[i]),end="")
if(i% 7== 0 and i != 0):
print("")