一.前言
我上大一时接触到程序设计基础这门课,这门课有时会有实验,我便常常摸鱼,利用CSDN来做,
虽然有时搜不到,但每次搜到时我想:爽!!!
于是我也开始写,写下我们这个时期的答案与青春
二.实验与答案
1.输入一个正整数,输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0,例如,输入65000,输出应该为56。输入也可能是负数。
【程序示例】
【程序代码】-方法一
num = input("请输入一个正整数:") # 输入一个正整数的字符串
if int(num)<=0:
print("输入的数不是正整数,程序结束!")
else:
print(f'逆序数字是:{int(num[::-1])}') #对字符串逆序,再转整型,int()函数可去除整数前面的前导0
【程序代码】方法二
num = input("请输入一个正整数:") # 输入一个正整数的字符串
if int(num)<=0:
print("输入的数不是正整数,程序结束!")
else:
print(f"逆序数字是:{(num[::-1]).lstrip('0')}") #lstrip('0')去除字符串左侧的字符'0'
2、123321是一个非常特殊的数,从左边读和从右边读是一样的,这样的数称为回文数。输入一个正整数n(1<=n<=54),编程求各位数字之和等于n的5位和6位十进制回文数。按从小到大的顺序输出满足条件的整数。如果输入的数不在指定的范围内,输出“输入有误,请重新输入!”,如果没有各位之和与输入的数相等的5位和6位回文数,输出“无满足条件的数!”
【提示】程序开始可以定义一个循环,判断输入的正整数是否在(1<=n<=54)内,如果不在,连续输入,直到符合条件为止。
【程序代码】
def isHuiWen(num):
if str(num)==str(num)[::-1]:
return True
else:
return False
def getSum(num):
s=0
for x in str(num):
s=s+int(x)
return s
n=int(input("请输入一个正整数:"))
while n<0 or n>54:
n=int(input("输入有误,请重新输入!"))
flag=0
for num in range(10**4,10**6):
if isHuiWen(num) and n==getSum(num):
flag=1
print(num,end=" ")
if flag==0:
print("无满足条件的数!")
3、用户输入一个字符串作为密码,判断密码强度,规则为:
# 密码长度小于8 为弱密码,
# 密码长度大于等于8
# 且包含至少2 种字符为中等强度
# 密码包含3 种字符为强
# 包含全部4 种字符为极强。
【提示】四种字符:
# string.digits 可返回'0123456789'
# string.ascii_lowercase 可返回'abcdefghijklmnopqrstuvwxyz'
# string.ascii_uppercase 可返回'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# string.punctuation 可返回'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
【程序示例】
【程序代码】
import string
pwd = input("请输入密码:")# 输入一个正整数的字符串
#记录密码种类变量
digit=lower=upper=punc=0
for c in pwd:#判断密码种类
if c in string.digits:
digit=1
elif c in string.ascii_lowercase:
lower=1
elif c in string.ascii_uppercase:
upper=1
elif c in string.punctuation:
punc=1
kinds=digit+lower+upper+punc #密码种类
if len(pwd)<8:
print("密码长度小于8:弱密码!")
elif kinds<2:
print("密码长度大于8,字符种类少于2:弱密码!")
elif kinds==2:
print("密码长度大于8,字符种类为2:中等强度密码!")
elif kinds==3:
print("密码长度大于8,字符种类为3:强密码!")
elif kinds==4:
print("密码长度大于8,字符种类为4:极强密码!")
4、编写程序,计算s=a+aa+aaa+……+aaa…aaa的值,其中a是1-9之间的某个数字,n是一个正整数。例如,当a=2,n=5时,s=2+22+222+2222+22222=24690。
【提示】方法一:如果item表示当前项且为数值型,则下一项为item*10+a。
方法二:利用字符串的乘法特性,如”2”*2的值为”22”,”2”*3的值为”222”。如果a=2,则第二项为int(str(a)*2),第三项为int(str(a)*3),第四项为int(str(a)*4),第n项为int(str(a)*n)。
【程序代码】
方法一:
a,n=eval(input("请输入a,n的值"))
s=0
for i in range(1,n+1):
s=s+int(str(a)*i)
print("值为:",s)
方法二
a,n=eval(input(“请输入a,n的值”)) #不加()也认为是元组
s=0
item=0
for i in range(1,n+1):
item=item*10+a
s=s+item
print("值为:",s)