Python菜鸟练手小题100例
###### 题目地址
#-*- codeing = utf-8 -*-
#@Time : 2021/3/18 21:17
#@Author : HUGBOY
#@File : 1.py
#@Software: PyCharm
00x01 有四个数字:1、2、3、4,能组成多少个互不相同且
无重复数字的三位数?各是多少?
num=0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if (i!=j)and(i!=k)and(j!=k):
print(i,j,k)
num=num+1
print('共',num,'个。')
00x02 企业发放的奖金根据利润提成。
利润(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,
求应发放奖金总数?
我的第一感觉就是用if判断,看了答案的算法太巧妙了。
想让数组倒序来算,但不知道数组倒序输出的方法
i = int(input('净利润:'))
arr=[1000000,600000,400000,200000,100000,0]
rat=[0.01,0.015,0.03,0.05,0.075,0.1]
r=0
for dex in range(0,6):
if i > arr[dex]:
r+=(i-arr[dex])*rat[dex]
print((i-arr[dex])*rat[dex])
i=arr[dex]
print(r)
00x03 一个整数,它加上100后是一个完全平方数
,再加上168又是一个完全平方数,请问该数是多少?
没有思路的一道题。
程序分析:
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j = 168,i和j至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i和j要么都是偶数,要么都是奇数。
5、从3和4推导可知道,i与j均是大于等于2的偶数。6、由于i * j = 168, j >= 2,则1 < i < 168 / 2 + 1。
7、接下来将i的所有数字循环计算即可。
代码:
for i in range(1, 85):
if 168 % i == 0:
j = 168 / i
if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:
m = (i + j) / 2
n = (i - j) / 2
x = n * n - 100
print(x)
00x04 输入某年某月某日,判断这一天是这
一年的第几天?
答案的算法复杂度更低,仅适用了判断和加法。我的用了乘法,遍历。
#我的
d=0
year=int(input('year:'))
month=int(input('month:'))
day=int(input('day:'))
arr_month=[0,31,28,31,30,31,30,31,30,30,31,31,30]
if year%100 == 0:
if year%400 == 0:
arr_month[2]=29
if year%4 == 0:
arr_month[2]=29
for i in range(1,month):
d=d+arr_month[i]
print('This is the',d+day,'th day !')
#答案
year = int(input('year:'))
month = int(input('month:'))
day = int(input('day:'))
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
sum = months[month - 1]
else:
print ('data error')
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print ('it is the %dth day.' % sum)
00x05 题目:输入三个整数x,y,z,请把
这三个数由小到大输出。
给爷整乐了。。。
#HugBoy
x=int(input('x:'))
y=int(input('y:'))
z=int(input('z:'))
if x<y:
if x<z:
if(y<z):
print(x,y,z)
else:
print(x,z,y)
else:
print(z,x,y)
else:
if y>z:
print(z,y,x)
else:
if x<z:
print(y,x,z)
else:
print(y,z,x)
#Answer
l = []
for i in range(3):
x = int(input('integer:'))
l.append(x)
l.sort()
print (l)
00x06 斐波那契数列。
斐波那契数列(Fibonacci sequence),
又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
都差不多。
#HugBoy
dex=int(input('dex:'))
fib = []
fib.append(0)
fib.append(1)
for i in range(2,dex+1):
x=fib[i-1]+fib[i-2]
fib.append(x)
print(fib[dex])
print(fib)
#递归
def fib(n):
if n==1 or n==2:
return 1
return fib(n-1)+fib(n-2)
#遍历
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
#函数
def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
00x07 将一个列表的数据复制到另一个列表中。
a=[1,2,3,4,5,6]
b=a[:]
print(b)
00x08 输出 9*9 乘法口诀表。
for m in range(1,10):
for n in range(1,m+1):
print('%d*%d = %d'%(m,n,m*n),end=" ")
print()
00x09 暂停一秒输出。
import time
Name={1:'h',2:'u',3:'g',4:'b',5:'o',6:'y'}
for key,value in dict.items(Name):
print(key,value)
time.sleep(1)
00x10 暂停一秒输出,并格式化当前时间。
#1
import time,datetime
time_now = datetime.datetime.now()
print(time_now.strftime("%Y.%m.%d %H-%M-%S"))
time.sleep(1)
time_now = datetime.datetime.now()
print(time_now.strftime("%Y.%m.%d %H-%M-%S"))
#2
import time
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
time.sleep(1)
print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
#-*- codeing = utf-8 -*-
#@Time : 2021/3/19 12:30
#@Author : HUGBOY
#@File : 2.py
#@Software: PyCharm
00x11 古典问题:有一对兔子,从出生后第3个月起每个月
都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?
"""
f1 = 1
f2 = 1
for i in range(1,22):
print ('%12ld %12ld' % (f1,f2), end=" ")
if (i % 3) == 0:
print ('')
f1 = f1 + f2
f2 = f1 + f2
"""
00x12 判断101-200之间有多少个素数,并输出所有素数。
from functools import reduce
"""
答案好像还没我的简单哈哈哈
#HugBoy
sum = 0
for i in range(101,201):
for k in range(2,i):
if(i%k==0):
break
else:
if(k==i-1):
sum+=1
print(sum)
#Answer
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print ('%-4d' % m)
h += 1
if h % 10 == 0:
print ('')
leap = 1
print ('The total is %d' % h)
"""
00x13 打印出所有的"水仙花数",所谓"水仙花数"是指一
个三位数,其各位数字立方和等于该数本身。
# 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
"""
#HugBoy
for i in range(100,1000):
g=i%10
s=(i%100)//10
b=i//100
if(i==g*g*g+s*s*s+b*b*b):
print('%d = %d+%d+%d'%(i,b*b*b,s*s*s,g*g*g))
#Answer
for n in range(100,1000):
i = n // 100
j = n // 10 % 10
k = n % 10
if n == i*i*i + j*j*j + k*k*k:
print(n)
"""
00x14 将一个正整数分解质因数。
例如:输入90,打印出90=233*5。
"""
没做出来,不知道算法思路
#HugBoy
def sig(n):
l=[2,3,5,7,11,13,17,19,23,29,31,37,41]
s=[]
for i in l:
if(n%i==0):
print(i,end="*")
n=n//i
else:
if(n==1):
return 1
sig(n)
sig(456982)
#2Hugboy
def zhishu(n):
print('{} ='.format(n),end=" ")
while n!=1:
for i in range(2,n+1):
if n%i==0:
n//=i
if n == 1:
print(i)
else:
print('{}*'.format(i),end=" ")
break
zhishu(9638)
#Answer
def reduceNum(n):
print ('{} = '.format(n), end=" ")#输出format中第0个值
if not isinstance(n, int) or n <= 0 :
print ('请输入一个正确的数字 !')
exit(0)
elif n in [1] :
print ('{}'.format(n))
while n not in [1] : # 循环保证递归
for index in range(2, n + 1) :
if n % index == 0:
n //= index # n 等于 n//index
if n == 1:
print (index )
else : # index 一定是素数
print ('{} *'.format(index), end=" ")
break
reduceNum(90)
"""
00x15 利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,60-89分之间的
用B表示,60分以下的用C表示。
"""
score=int(input('input score:'))
if not isinstance(score,int) or score<0 or score>100:
print('input error.')
exit(0)
if score >= 90:
grade = 'A'
elif score >= 60:
grade = 'B'
else:
grade = 'C'
print('%d belong to %s grade.'%(score,grade))
"""
00x16 输出指定格式的日期。
"""
import datetime
if __name__ == '__main__':
print(datetime.date.today().strftime("NowDay = %d/%m/%Y"))#19/03/2021
zlBirthDay=datetime.date(2000,4,10)
print(zlBirthDay.strftime("zlBirthDay = %d/%m/%Y"))#创建时间对象10/04/2000
zlBirthDayNextDay=zlBirthDay + datetime.timedelta(days=1)
print(zlBirthDayNextDay.strftime("NextDay = %d/%m/%Y"))#时间计算10/04/2001
myBirthDay = zlBirthDay.replace(year=zlBirthDay.year+1,month=zlBirthDay.month-2,day=zlBirthDay.day+13)
print(myBirthDay.strftime("myBirthDay = %d/%m/%Y")) # 时间替换23/02/2001
"""
00x17 输入一行字符,分别统计出其中英文字母、
空格、数字和其它字符的个数。
"""
import string
alpha = 0
space = 0
digit = 0
others = 0
s = input("letters:\n")
for c in s:
if c.isalpha():
alpha += 1
elif c.isspace():
space += 1
elif c.isdigit():
digit += 1
else:
others += 1
print('Total: alpha=%d space=%d digit=%d other=%d'%(alpha,space,digit,others))
"""
00x18 求s=a+aa+aaa+aaaa+aa...a的值,
其中a是一个数字。例如2+22+222+2222+22222
(此时共有5个数相加),几个数相加由键盘控制。
"""
n = int(input("n:"))
a = int(input("a:"))
def sum(a,n):
Tn=0
l=[]
for i in range(1,n+1):
Tn = Tn + a
a = a*10
l.append(Tn)
return reduce(lambda x,y : x+y,l)
print('Total:',sum(a,n))
"""
00x19 一个数如果恰好等于它的因子之和,
这个数就称为"完数"。例如6=1+2+3.编程
找出1000以内的所有完数。
"""
lambda灰常好用哈哈
#HugBoy
for i in range(2,1001):
root=[0]
for j in range(1,i):
if i%j==0:
root.append(j)
sum=reduce(lambda x,y : x+y ,root)
if(i == sum):
print(i)
#Answer
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])
"""
00x20 一球从100米高度自由落下,每次落地后
反跳回原高度的一半;再落下,求它在第10次落
地时,共经过多少米?第10次反弹多高?
"""
So easy !
#HugBoy
high=100.0
distance=100.0
for times in range(1,11):
high*=0.5
if times==10:
break
distance = distance + 2 * high
print(high,distance)
#Answer
tour = []
height = []
hei = 100.0 # 起始高度
tim = 10 # 次数
for i in range(1, tim + 1):
# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
if i == 1:
tour.append(hei)
else:
tour.append(2*hei)
hei /= 2
height.append(hei)
print('总高度:tour = {0}'.format(sum(tour)))
print('第10次反弹高度:height = {0}'.format(height[-1]))
"""
#-*- codeing = utf-8 -*-
#@Time : 2021/3/19 23:06
#@Author : HUGBOY
#@File : 3.py
#@Software: PyCharm
00x21 猴子吃桃问题:猴子第一天摘下若干个桃子,
当即吃了一半,还不瘾,又多吃了一个第二天早上又
将剩下的桃子吃掉一半,又多吃了一个。以后每天早
上都吃了前一天剩下的一半零一个。到第10天早上想
再吃时,见只剩下一个桃子了。求第一天共摘了多少。
"""
#HugBoy
tao = 1
for i in range(1,10):
tao = (tao + 1)*2
print(tao)
#Answer
x2 = 1
for day in range(9,0,-1):#从第九天开始,step=-1
x1 = (x2 + 1) * 2
x2 = x1
print (x1)
"""
00x22 两个乒乓球队进行比赛,各出三人。甲队
为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛
名单。有人向队员打听比赛的名单。a说他不和x比
,c说他不和x,z比,请编程序找出三队赛手的名单.
"""
比赛出场问题
1.每人只且仅只对1人
2.考虑定一移一,固定某队的出场顺序
#HugBoy
t1=['a','b','c']
t2=['x','y','z']
for i in t1:
for j in t2:
if(i=='a' and j=='x')or(i=='c' and j=='x')or(i=='c' and j=='z'):
pass
else:
print(i,' PK ',j)
#2HugBoy
t2=['x','y','z']
for i in t2:
for j in t2:
for k in t2:
if(i==j or i==k or j==k)or(i=='x' or k=='x' or k=='z'):
continue
else:
print('a--PK--%s b--PK--%s c--PK--%s'%(i,j,k))
#Answer
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1):
if i != j:
for k in range(ord('x'),ord('z') + 1):
if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
print ('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k)))
"""
00x23 打印出如下图案(菱形):
#
# *
# ***
# *****
# *******
# *****
# ***
# *
"""
我的代码更健壮,能打印所有边长的菱形
思维定式,其实星星右边的空格不用打印出来的,看不出来。
#HugBoy
def diamond(n):
star=-1
space=n
for line in range(2*n-1):
if line<n:
star += 2
space -= 1
else:
star -= 2
space += 1
for j in range(space):
print(end=" ")
for k in range(star):
print(end="*")
#for j in range(space):
#print(end=" ")
print()
diamond(n=int(input('input diamond length:')))
#Answer
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('')
"""
00x24 有一分数序列:2/1,3/2,5/3,8/5
,13/8,21/13...求出这个数列的前20项之和。
"""
#HugBoy
b=1
Sn=0
def fib(n):
if n==1:
return 2
if n==2:
return 3
else:
return fib(n-1)+fib(n-2)
for i in range(1,21):
a=fib(i)
Sn+=a/b
b=a
print(Sn)
#Answer1
from functools import reduce
a = 2.0
b = 1.0
l = []
l.append(a / b)
for n in range(1,20):
b,a = a,a + b
l.append(a / b)
print (reduce(lambda x,y: x + y,l))
#Answer2
a = 2.0
b = 1.0
s = 0
for n in range(1,21):
s += a / b
t = a
a = a + b
b = t
print (s)
#Answer3
a = 2.0
b = 1.0
s = 0.0
for n in range(1,21):
s += a / b
b,a = a , a + b
print (s)
s = 0.0
for n in range(1,21):
s += a / b
b,a = a , a + b
print (s)
"""
00x25 求1+2!+3!+...+20!的和。
"""
#HugBoy
Sn=0
for i in range(1,4):
n = 1
for g in range(1,i+1):
n*=g
Sn+=n
print(Sn)
#Answer1看做1~20相乘分别相加
n = 0
s = 0
t = 1
for n in range(1,21):
t *= n
s += t
print ('1! + 2! + 3! + ... + 20! = %d' % s)
#Answer2用python内置函数
s = 0
l = range(1,21)
def op(x):
r = 1
for i in range(1,x + 1):
r *= i
return r
s = sum(map(op,l))
print ('1! + 2! + 3! + ... + 20! = %d' % s)
"""
00x26 利用递归方法求5!
递归公式:fn=fn_1*4!
"""
我是天才hhh
.....忘了考虑0!了鹅鹅鹅
#HugBoy
def fn(n):
if n== 1:#if n==0:
return 1
else:
return n*fn(n-1)
print(fn(3))
#Answer
def fact(j):
sum = 0
if j == 0:
sum = 1
else:
sum = j * fact(j - 1)
return sum
print (fact(5))
"""
00x27 利用递归函数调用方式,将所输入
的5个字符,以相反顺序打印出来。
"""
def rput(s,l):
if l==0:
return
else:
print(s[l-1],end="")
rput(s, l - 1)
s=input('Enter 5 characters in English:')
l=len(s)
rput(s,l)
"""
00x28 递归 有5个人坐在一起,问第五个人多
少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
"""
def age(n):
if n==1:
c=10
else:
c=age(n-1)+2
return c
print(age(5))
"""
00x29 给一个不多于5位的正整数,
要求:一、求它是几位数,二、逆序打印出各位数字。
"""
递归上瘾? 答案的思路很简单清晰。
#HugBoy
def nice(n):
if n < 10:
print(n,end=" ")
else:
print(n-n//10*10,end=" ")
nice(n//10)
n=int(input('input a figure (>=1 and <=99999): '))
def fig(n,f):
if n<10:
print(f+1,end="位数:")
else:
n//=10
f+=1
fig(n,f)
fig(n,0)
nice(n)
#Answer
x = int(input("请输入一个数:\n"))
a = x // 10000
b = x % 10000 // 1000
c = x % 1000 // 100
d = x % 100 // 10
e = x % 10
if a != 0:
print ("5 位数:",e,d,c,b,a)
elif b != 0:
print ("4 位数:",e,d,c,b)
elif c != 0:
print ("3 位数:",e,d,c)
elif d != 0:
print ("2 位数:",e,d)
else:
print ("1 位数:",e)
"""
00x30 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
"""
即学即用,eee
#HugBoy
n=int(input('5th number:'))
a = n//10000
b = n%10000//1000
#c = n%1000//100
d = n%100//10
e = n%10
if(a==e and b==d):
print('%d 是回文数.'%n)
else:
print('%d 不是回文数.' % n)
#Answer
a = int(input("请输入一个数字:\n"))
x = str(a)
flag = True
for i in range(len(x)//2):
if x[i] != x[-i - 1]:
flag = False
break
if flag:
print ("%d 是一个回文数!" % a)
else:
print ("%d 不是一个回文数!" % a)
"""
#-*- codeing = utf-8 -*-
#@Time : 2021/3/20 16:08
#@Author : HUGBOY
#@File : 4.py
#@Software: PyCharm
00x 31 请输入星期几的第一个字母来判断一下
是星期几,如果第一个字母一样,则继续判断第二个字母。
1~7 : Monday-Tuesday-Wednesday-Thursday-Friday-Saturday-Sunday
"""
本以为是要考察BF比较算法,结果答案是用if写的。。。
#HugBoy
week = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
inc = []
flag = 1
inc.append(input('input char:'))
if inc[0]=='T' or inc[0]=='S':
inc.append(input('input char agin:'))
flag = 0
for day in week:
if flag and day[0]==inc[0]:
print(day)
if flag==0 and day[0]==inc[0] and day[1]==inc[1]:
print(day)
"""
00x 32 按相反的顺序输出列表的值。
"""
#HugBoy
l = [1,2,'dsf','dsfe',5,6,99,8,9,0]
for i in range(len(l),0,-1):
print(l[i-1])
#Answer
a = ['one', 'two', 'three']
for i in a[::-1]:#a[start:stop:step]
print (i)
"""
00x 33 按逗号分隔列表。
"""
join()貌似只可链接字符的列表
#HugBoy
l = ['one', 'two', 'three']
i = ','
g = '-'
print(i.join(l))
print(g.join(l))
#Answer
L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print (s1)
"""
00x 34 练习函数调用。
使用函数,输出三次 RUNOOB 字符串。
"""
def hello_runoob():
print ('RUNOOB')
def hello_runoobs():
for i in range(3):
hello_runoob()
if __name__ == '__main__':
hello_runoobs()
"""
00x 35 文本颜色设置。
"""
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
print (bcolors.HEADER + "警告的颜色字体?" + bcolors.HEADER)
print (bcolors.OKBLUE+"警告的颜色字体?" + bcolors.OKBLUE)
print (bcolors.OKGREEN + "警告的颜色字体?" + bcolors.OKGREEN)
print (bcolors.WARNING + "警告的颜色字体?" + bcolors.WARNING)
print (bcolors.FAIL + "警告的颜色字体?" + bcolors.FAIL)
print (bcolors.ENDC + "警告的颜色字体?" + bcolors.ENDC)
print (bcolors.BOLD + "警告的颜色字体?" + bcolors.BOLD)
print (bcolors.UNDERLINE + "警告的颜色字体?" + bcolors.UNDERLINE)
"""
00x 36 求100之内的素数。
"""
for里的if 和for外的 else 可以连用
#HugBoy
prime=[]
for i in range(2,101):
flag=1
for n in range(1,i):
if i%n==0 and n != 1:
flag=0
continue
if flag:
prime.append(i)
print(prime)
#Answer
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
for num in range(lower, upper + 1):
# 素数大于 1
if num > 1:
for i in range(2, num):
if (num % i) == 0:
break
else:
print(num)
"""
00x 37 对10个数进行排序。
"""
a,b=b,a #a,b互换赋值
if a>b:print('yes') #可以写在一行
#Hugboy
t=0
nb = [2,63,968,56,878,56,0,25,12,68,32,720,63,659]
for i in range(len(nb)):
for j in range(i+1,len(nb)):
if nb[i]>nb[j]:
t = nb[i]
nb[i]=nb[j]
nb[j]=t
print(nb)
#Answer
if __name__ == "__main__":
N = 10
# input data
print ('请输入10个数字:\n')
l = []
for i in range(N):
l.append(int(input('输入一个数字:\n')))
print
for i in range(N):
print (l[i])
print
# 排列10个数字
for i in range(N - 1):
min = i
for j in range(i + 1,N):
if l[min] > l[j]:min = j
l[i],l[min] = l[min],l[i]
print ('排列之后:')
for i in range(N):
print (l[i])
"""
00x 38 求一个3*3矩阵主对角线元素之和。
利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
"""
#二维数组不可直接定义。
#二维数组构造:列表的元素是一个个空列表
#Hugboy
arr=[]
sum=0
for r in range(3):
arr.append([])
for c in range(3):
arr[r].append(float(input('input a figure:')))
sum+=arr[r][r]
print(sum)
#Answer
if __name__ == '__main__':
a = []
sum = 0.0
for i in range(3):
a.append([])
for j in range(3):
a[i].append(float(input("input num:\n")))
for i in range(3):
sum += a[i][i]
print (sum)
"""
00x 39 有一个已经排好序的数组。现输入一
个数,要求按原来的规律将它插入数组中。
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
"""
#1.我看到题,竟然思考 有序列表是高到低/低到高的问题
#2.列表元素个数-列表长度-列表下标 的关系👌麻烦
#3.别忘了 有序列表可以当条件用 直接判断input_number > for i in (order_arr) 即可
#Hugboy
order_arr=[1,6,15,56,89,102,156,789]
ins = float(input('insert number:'))
if ins>order_arr[-1]:
order_arr.append(ins)
else:
for i in range(len(order_arr)-1):
if ins>order_arr[i] and ins<order_arr[i+1]:
#扩大一个空间
order_arr.append(0)
for k in range(len(order_arr)-1,i,-1):
order_arr[k]=order_arr[k-1]
#print('all_length:%d order_arr[%d]=order_arr[%d]'%(len(order_arr),k,k-1))
order_arr[i+1]=ins
print(order_arr)
#Answer
if __name__ == '__main__':
# 方法一 : 0 作为加入数字的占位符
a = [1,4,6,9,13,16,19,28,40,100,0]
print ('原始列表:')
for i in range(len(a)):
print (a[i])
number = int(input("\n插入一个数字:\n"))
end = a[9]
if number > end:
a[10] = number
else:
for i in range(10):
if a[i] > number:
temp1 = a[i]
a[i] = number
for j in range(i + 1,11):
temp2 = a[j]
a[j] = temp1
temp1 = temp2
break
print ('排序后列表:')
for i in range(11):
print (a[i])
"""
00x 40 将一个数组逆序输出。
用第一个与最后一个交换。
"""
1.len(i)类似常用的变量,可以定义个变量代替。减小算法复杂度。
2.为自己👍点赞,第40题马上一半了.
#Hugboy
l = [1,2,3,4,5,6,7,8,9,10]
for i in range(len(l)//2):
l[i],l[len(l)-i-1]=l[len(l)-i-1],l[i]
print(l)
#Answer
if __name__ == '__main__':
a = [9,6,5,4,1]
N = len(a)
print (a)
for i in range(len(a) // 2):
a[i],a[N - i - 1] = a[N - i - 1],a[i]
print (a)
"""
#-*- codeing = utf-8 -*-
#@Time : 2021/3/21 21:18
#@Author : HUGBOY
#@File : 5.py
#@Software: PyCharm
00x 41 模仿静态变量的用法。
"""
很好奇类里的函数varfunc(),怎么知道传的参数n是什么类型的呢?.
#Answer
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print (self.StaticVar)
print (Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
"""
00x 42 学习使用auto定义变量的用法。
程序分析:没有auto关键字,使用变量作用域来举例吧。
"""
#Hugboy
#Answer
num = 2
def autofunc():
num = 1
print ('internal block num = %d' % num)
num += 1
for i in range(3):
print ('The num = %d' % num)
num += 1
autofunc()
"""
00x 43模仿静态变量(static)另一案例。
程序分析:演示一个python作用域使用方法
"""
#Hugboy
#Answer
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print ('nNum = %d' % self.nNum)
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print ('The num = %d' % nNum)
inst.inc()
"""
00x 44 两个 3 行 3 列的矩阵,实现其对应
位置的数据相加,并返回一个新矩阵:
#X = [[12,7,3],
# [4 ,5,6],
# [7 ,8,9]]
#
#Y = [[5,8,1],
# [6,7,3],
# [4,5,9]]
"""
#Hugboy
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
sum=[[],[],[]]
for i in range(3):
for j in range(3):
sum[i].append(X[i][j]+Y[i][j])
print(sum)
#Answer
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
result = [[0,0,0],
[0,0,0],
[0,0,0]]
# 迭代输出行
for i in range(len(X)):
# 迭代输出列
for j in range(len(X[0])):
result[i][j] = X[i][j] + Y[i][j]
for r in result:
print(r)
"""
00x 45 统计 1 到 100 之和。
"""
n=0
for i in range(1,101):
n+=i
print(n)
"""
00x 46 求输入数字的平方,如果平方运算后小
于 50 则退出。
"""
#Hugboy
def SQ(n):
return n*n
again=1
while again:
n=int(input('input a figure:'))
if SQ(n)<50:
again=0
#Answer
TRUE = 1
FALSE = 0
def SQ(x):
return x * x
print ('如果输入的数字小于 50,程序将停止运行。')
again = 1
while again:
num = int(input('请输入一个数字:'))
print ('运算结果为: %d' % (SQ(num)))
if SQ(num) >= 50:
again = TRUE
else:
again = FALSE
"""
00x 47 两个变量值互换。
"""
def exchange(x,y):
x,y=y,x
return (x,y)
a=int(input('enter a digit:'))
b=int(input('again:'))
a,b = exchange(a,b)
print('a = {}, b = {}'.format(a,b))
"""
00x 48 数字比较。
00x 49 使用lambda来创建匿名函数。
"""
MIXNUM = lambda x,y:(x>y)*x+(x<y)*y
MINNUM = lambda x,y:(x<y)*x+(x>y)*y
if __name__ == '__main__':
x, y = 10, 20
print('The largar one is %d.' % MIXNUM(x, y))
print('The lower one is %d.' % MINNUM(x, y))
"""
00x 50 输出一个随机数。使用 random 模块。
"""
import random
print(random.uniform(0,9))
print(random.randint(0,9))
"""
________________________________________________________
Every good deed you do will someday come back to you.
Love you,love word !