1. 实现输出 1 - 2 + 3 - 4 + 5 - 6 ... + 99 的和。
思路:偶数的时候为负数
s=0
for i in range(1,100):
# i为偶数时置为负数
if i%2 == 0:
i = -i
s += i
print(s)
2. 求100以内所有的质数2,3,5,7,11...质数只能被1和自身整除。
思路 一:质数只能被1和自身整除,每个数除以小于等于自身的所有数,如果整除的数量只有2,则表示只被1和自身整除。当然也可以求2到自身-1,那么整除的数量为0,也是质数。
for i in range(2,101):
s = 0
for j in range(1, i+1):
if i%j==0:
s += 1
if s == 2:
print(i)
思路 二:质数既然只能被1和自身整除,那么在除小于自身且大于0的数的过程中,一旦出现整除则表示不是质数。
for i in range(2,101):
for j in range(2, i):
if i%j==0:
break
# 与for联用的else,如果循环没有执行完,比如中途跳出,则else中的语句不会执行
else:
print(i)
3. 打印99乘法表。
思路: 两层循环,外层决定行数,内层决定列数。
for i in range(1,10):
for j in range(1,i+1):
# print()方法的end参数,表示print的语句以什么字符结尾,默认是\n换行符
print('%d * %d = %2d' % (j, i, i*j), end=' ')
# 用一个print打印一个换行
print()
4. 有这样一种数叫回文数,如:12321(第一个等于最后一个,第二个等于倒数第二个,以此类推,直到中间仅剩一个数),写一个函数,传入一个整数,判断这个数是不是这种前后一样的数。
思路:既然要对比前后是否一致,整数肯定处理不了的,需要转换成字符串,转换成字符串只有用前后(0,-1)进行对比,比较次数为整数位数的一半取整。
def palindromic(data):
data = str(data)
bool_=True
for i in range(len(data)//2):
if data[i]!=data[-i-1] or len(data)%2==0:
bool_=False
if bool_:
print("%s是回文数!"%data)
else:
print("%s不是回文数!"%data)
palindromic(32123)
5. 《算经》中有这样一个问题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?
思路:百钱买百鸡,那么鸡的总数是100只,钱总共是100,那么公鸡最多只可能有20只,母鸡最多34只,小鸡三百只?(小鸡可以100-公鸡-母鸡)
for i in range(21): #i代表公鸡
for j in range(34):#j代表母鸡
k=100-i-j #k代表小鸡数量
if(k%3==0)and (i*5 + j*3 + k/3)==100:
print('公鸡%2d只,母鸡%2d只,小鸡%2d只' %(i,j,k))
6. 实现登录,账号名为admin,密码123,则提示“登录成功”,如果账号或者密码错误,则提示“账号名或密码错误”并允许重新输入用户名和密码,如果3次登录失败,则提示“登录失败”并退出程序。
count = 0
while True:
user = input("账号:")
pwd = input("密码:")
if user == "admin" and pwd == "123":
print("登录成功!")
break
count += 1
if count == 3:
print("登录失败!")
break
7. 一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被 3整除,求这样的四位数中最大的和最小的两数各是几?
numbers = []
for i in range(1, 10): # 必须从1开始,0就是三位数了
for j in range(10): # 必须以10结束,才能取到9
number = i * 1000 + 3 * 100 + 6 * 10 + j
if number % 2 == 0 and number % 3 == 0:
numbers.append(number)
print("max:", max(numbers))
print("min:", min(numbers))