菜鸟Python 100题
Posted Fantasy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟Python 100题相关的知识,希望对你有一定的参考价值。
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
import itertools
a = ('1','2','3','4')
for i in range(1,5):
for k in itertools.permutations(a,i):
if 3 == len(k):
print(''.join(k))
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if(i != k) and (i != j) and (j != k):
print(i,j,k)
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
b = [1000000,600000,400000,200000,100000,0]
r = [0.01,0.015,0.03,0.05,0.075,0.1]
cou = 0
you = int(input("你的业绩:"))
for i in range(len(b)):
if you > b[i]:
cou += (you - b[i]) * r[i]
print('提成额度',you-b[i],'提成点',str(r[i]*100)+'%','奖金:',(you - b[i]) * r[i])
you = b[i]
print(cou)
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
# 设这个数是 n,
# n+100 = a^2,
# a^2+168=b^2,
# 所以 (b+a)(b-a)=168=84*2 = 42*4 = 28*6 = 14*12,
# 由 b+a=84,b-a=2 解得 a=(84-2)/2=41,所以 n=41^2-100 = 1581,
# 由 b+a=42,b-a=4 解得 a=(42-4)/2=19,所以 n=19^2-100=261,
# 由 b+a=28,b-a=6 解得 a=(28-6)/2=11,所以 n=11^2-100 = 21 ,
# 由 b+a=14,b-a=12 解得 a=(14-12)/2=1,所以 n=1^2-100 = -99
for i in range(1, 85):
if 168 % i == 0:
j = 168 / i
x = 168 / j
a = (j-x)/2
n = a*a-100
if n - int(n) == 0:
print(int(n))
输入某年某月某日,判断这一天是这一年的第几天?
date = input("请输入日期<例 2019-10-08>:")
days = (0,31,59,90,120,151,181,212,243,273,304,334)
sum = 0
leap = 0
try:
y,m,d = date.split('-')
if 0 < int(m) <= 12:
sum = days[int(m)-1]
sum += int(d)
if (int(y) % 400 == 0) or ((int(y) % 4 == 0) and (int(y) % 100 != 0)):
leap = 1
if (leap == 1) and (int(m) > 2):
sum += 1
print(sum)
else:
print("月份输入错误")
except Exception as a:
print("请按照提示输入")
输入三个整数x,y,z,请把这三个数由小到大输出。
li = []
for i in ("x","y","z"):
inp = input("输入 %s 数字:" %i)
li.append(int(inp))
li.sort()
print(li)
输出 9*9 乘法口诀表
for i in range(10):
for j in range(1,i+1):
print("%d*%d=%d"%(j,i,i*j),end=' ')
print()
暂停一秒输出,并格式化当前时间。
import time,datetime
print(datetime.datetime.now())
time.sleep(1)
print(datetime.datetime.now())
time.sleep(1)
print(time.localtime())
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime()))
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
a = 0 #1,1 2 3 5 8 13 21 34
b = 1 #1 2 3 5 8 13 21 34 55
for i in range(1, 13):
print('%s月:有%s只兔子' % (i, b))
a, b = b, a + b
判断101-200之间有多少个素数,并输出所有素数
cou = 0
for i in range(101, 201):
k = 0
for j in range(2, i):
if i % j == 0:
k += 1
#print(i, j, end=' ')
if k == 0:
cou += 1
print(i)
print("总共" + str(cou) + "个素数")
检查网站是否可以正常访问
import requests
for i in ur:
try:
url = 'http://'+i
r = requests.get(url)
if r.status_code == 200:
print(url)
except Exception as err:
print()
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for x in range(100,1000):
a = str(x)
if int(a[0])**3+int(a[1])**3+int(a[2])**3 == x:
print(x)
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
while True:
x = int(input("输入整数:"))
print('%d='%x,end='')
while x > 1:
for i in range(2,x+1):
if x % i == 0:
x = int(x/i)
if x == 1:
print('%d' % i, end='')
else:
print('%d*' % i,end='')
print()
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
def sum(count):
number = 0
string = 0
space = 0
other = 0
for i in count:
if i.isdigit():
number += 1
elif i.isalpha():
string += 1
elif i.isspace():
space += 1
else:
other +=1
return '数字:'+str(number) + ';字母:'+ str(string) + ';空格:'+ str(space) +';其他:' + str(other)
print(sum('my name is fana 1234567'))
xx = input("输入:")
print(sum(xx))
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制
number = int(input("请输入数字:"))
frequency = int(input("次数:"))
x = number
a = []
sum = 0
for i in range(frequency):
a.append(x)
c = str(x)+str(number)
x = c
for j in range(len(a)):
sum += int(a[j])
for k in a:
if k == a[-1]:
print(k,end='')
else:
print(str(k),end='+')
print('=%d' % sum,end='')
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
ball = 100
hop = []
for i in range(10):
if i == 0:
hop.append(ball)
else:
hop.append(ball*2)
ball = ball / 2
print("第%s次,反弹%s米" % (i+1, ball))
print("第10次落地,共经历%s米"%(sum(hop)))
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
x = 1
for i in range(9,0,-1):
print(i,end=' = ')
x = (x+1)*2
print(x)
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
from sys import stdout
for j in range(2, 1001):
k = []
n = -1
s = j
for i in range(1, j):
if j % i == 0:
n += 1
s -= i
k.append(i)
if s == 0:
print(j)
for i in range(n):
stdout.write(str(k[i]))
stdout.write(' ')
print(k[n])
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
for i in itertools.permutations(red):
for j in zip(i, blue):
if j in [('a','x'),('c','x'),('c','z')]:
break
else:
for k in range(len(red)):
print(i[k], blue[k])
#2 ==========================
for player1 in 'cab':
for player2 in 'xyz':
if player1 == 'c' and player2 != 'x' and player2 != 'z':
remain2 = set('xyz') - set(player2)
print("{}----{}".format(player1,player2))
if player1 == 'a' and player2 != 'x' and player2 in remain2:
remain2 -= set(player2)
print("{}----{}".format(player1,player2))
if player1 == 'b' and player2 in remain2:
print("{}----{}".format(player1,player2))
打印出如下图案(菱形):
*
***
*****
*******
*****
***
*
#==1============
a = "*"
c = 1
b = 4
for i in range(b):
c += 2
for i in range(b):
print(a.center(c,' '))
a = a + "**"
for j in range(b):
if j == 0:
a = a[:-2]
continue
else:
a = a[:-2]
print(a.center((c),' '))
#==2============
from sys import stdout
for i in range(4):
for j in range(2 - i + 1):
stdout.write(' ')
for k in range(2 * i + 1):
stdout.write('*')
print()
for i in range(3):
for j in range(i + 1):
stdout.write(' ')
for k in range(4 - 2 * i + 1):
stdout.write('*')
print()
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
a = 2
b = 1
count = 0
for i in range(20):
count += a/b
b, a = a, a+b
print("%s = %s" %(i,count))
求1+2!+3!+...+20!的和
# c = 0
# for i in range(1,21):
# c = c+i
# print("%s = %s + %s"%(c,c-i,i))
# ==== 后面有! 是阶乘 ====
c = 1
x = 0
for i in range(1,21):
c = c * i
x = x +c
#print("%s! = %s" %(i,c))
if i == 20:
print("%s" % (i), end='')
else:
print("%s+" %(i),end='')
print("=%s"%x,end='')
利用递归方法求5!
def sum(n):
if n == 0:
con = 1
else:
con = n * sum(n - 1)
return con
print(sum(5))
利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
def fan(inp):
if len(inp) == 1:
print(inp[-1])
else:
print(inp[-1])
fan(inp[:-1])
a = input("请输入:")
fan(a)
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def age(x):
if x == 1:
one = 10
else:
one = age(x-1) + 2
return one
print(age(5))
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
x = input("请输入一个数:")
if not x.isdigit():
print("不是数字")
else:
n = str(x)
print('length:', len(n))
print('numbers: ',end='')
for i in range(len(n)-1, -1, -1):
print(n[i],end=' ')
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同
x = input("请输入一个数:")
t = True
if x.isdigit():
n = str(x)
for i in range(len(n)):
print(n[i],n[-i-1])
if n[i] != n[-i-1]:
t = False
break
else:
print("请输入数字")
if t:
print("%s = %s 是回文数" %(x,t))
else:
print("%s = %s 不是回文数" %(x,t))
## 2 ###################
if len(n) == 5:
if n == "".join(reversed(n)):
print('{0}是回文数'.format(n))
else:
print('{0}不是回文数'.format(n))
else:
print("输入错误")
文本颜色设置
显示方式 | 效果 | 字体色 | 背景色 | 颜色 |
---|---|---|---|---|
0 | 默认 | 30 | 40 | 黑色 |
1 | 高亮 | 31 | 41 | 红色 |
4 | 下划线 | 32 | 42 | 绿色 |
5 | 闪烁 | 33 | 43 | 黃色 |
7 | 反显 | 34 | 44 | 蓝色 |
8 | 不可见 | 35 | 45 | 紫红色 |
22 | 非粗体 | 36 | 46 | 青蓝色 |
24 | 非下划线 | 37 | 47 | 白色 |
25 | 非闪烁 | |||
27 | 非反显 |
# 常见开头格式:
# 33[0m 默认字体正常显示,不高亮
# 33[32;0m 红色字体正常显示
# 33[1;32;40m 显示方式: 高亮 字体前景色:绿色 背景色:黑色
# 33[0;31;46m 显示方式: 正常 字体前景色:红色 背景色:青色
# 33[1;31m 显示方式: 高亮 字体前景色:红色 背景色:无
print('