python100题笔记

原始题目与答案:RUNOOB.COM

1 循环

1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

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)

range函数

  • range(1,5) #代表从1到5(不包含5)
    [1, 2, 3, 4]
  • range(1,5,2) #代表从1到5,间隔2(不包含5)
    [1, 3]
  • range(5) #代表从0到5(不包含5)
    [0, 1, 2, 3, 4]

2 列表

企业发放的奖金根据利润提成。

利润提成
≤10w10%
≤20w低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%
≤60w高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%
≤100w60万到100万之间时,高于60万元的部分,可提成1.5%
>100w超过100万元的部分按1%提成
i = int(input('净利润:'))		# 注意input的用法
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):			#检验输入的净利润属于哪一档
    if i>arr[idx]:				#arr[idx]是列表arr中第idx个元素
        r+=(i-arr[idx])*rat[idx]
        print ((i-arr[idx])*rat[idx])
        i=arr[idx]
print (r)

3 数学计算

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:假设该数为 x。
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:			# 因为i*j=168,所以i一定是168的一个公约数;%:返回除法的余数
        j = 168 / i;			# i*j=16
        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)

4 条件判断

输入某年某月某日,判断这一天是这一年的第几天?

year = int(input('year:\n'))	# int()函数用于将一个字符串或数字转换为整型;"\n"是换行符,表示换行
month = int(input('month:\n'))
day = int(input('day:\n'))
 
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)):		#闰年条件:能被400整除的年份;能被4整除,但不能被100整除的年份(例如2008是闰年,1900不是闰年)。
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print ('it is the %dth day.' % sum)

5 对list的操作: append, sort

输入三个整数x,y,z由小到大输出。

l = []		# 创建数组
for i in range(3):		# range(3) #代表从0到3(不包含3)
    x = int(input('integer:\n'))
    l.append(x)		#  list.append(x) : 在列表的末尾添加一个元素 x
l.sort()
print (l)

sort函数

基本形式

x = [4, 6, 2, 1, 7, 9]
x.sort()		
print x		# [1, 2, 4, 6, 7, 9]

返回副表

x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y 	#[1, 2, 4, 6, 7, 9]
print x 	#[4, 6, 2, 1, 7, 9]

两个可选参数:key和reverse

  • key在使用时必须提供一个排序过程总调用的函数:
x = ['mmm', 'mm', 'mm', 'm' ]
x.sort(key = len)		#输出['m', 'mm', 'mm', 'mmm']
  • reverse实现降序排序,需要提供一个布尔值:
y = [3, 2, 8 ,0, 1]
y.sort(reverse = True)		#输出[8, 3, 2, 1, 0]

6 Def 函数

斐波那契数列0、1、1、2、3、5、8、13、21、34、……。

def fib(n):
    a,b = 1,1
    for i in range(n-1):
        a,b = b,a+b
    return a
 
# 输出了第10个斐波那契数列
print (fib(10))

赋值

"""序列赋值"""
x,y,z = 1,2,3		# x = 1,y = 2,z = 3

"""链接赋值"""
x = y = 4
print id(x)	
print id(y)
#id() 函数返回对象的唯一标识符,标识符是一个整数

"""增量赋值"""
# +=

7 对list的操作:复制

将一个列表的数据复制到另一个列表中

a = [1, 2, 3]
b = a[:]
print (b)
# [:]表示重新分配了内存给新的列表变量,这时两者的内存地址是不同的,因此,改变其中的一个变量a 是不会影响到另一个变量b的

"""注意:以下赋值方式不是复制"""
a=[1,2,3]
b=a
print(id(a))     #2683539037576
print((id(b)))   #2683539037576
# 可以看到a和b的地址是一样的,语句b=a,就是将列表a的首地址给了b,换句话说就是a和b都指向地址2683539037576,所以在b对这块地址的内容修改时,就相当于修改了a的数据

8 循环

输出 9*9 乘法口诀表

for i in range(1, 10):		# i 是第一位乘积因子
    print() 		# 换行
    for j in range(1, i+1):
        print ("%d*%d=%d" % (i, j, i*j), end=" " )

print函数

换行

# python的print()函数中参数end=‘’默认为\n,所以会自动换行,以下两种方式等价
print("abc")
print("abc",end='\n')

# 通过以下方式不换行
print("abc",end="")
print("def")

自定义的字符串和变量混合输出

print(f'自定义字符串 {变量}')
print ("%d*%d=%d" % (i, j, i*j), end=" " )
# %s, 表示格化式一个对象为字符
# %d, 整数
# %12ld,长整型,12是输出长整型所占位数。如果不够,为以空格补充

9 time函数:sleep

暂停一秒输出。

import time 
myD = {1: 'a', 2: 'b'}
for key, value in dict.items(myD):
    print (key, value)
    time.sleep(1) # 暂停 1 秒

字典

python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成。冒号’:‘分开键和值,逗号’,'隔开组。用大括号创建的方法如下:

python示例:
dic={‘zhangsan’:‘boy’,‘xiaohong’:‘girl’}


10 time函数:strftime,localtime

暂停一秒输出,并格式化当前时间。

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())))

Time函数

time.gmtime()

未传入任何参数时,返回当前UTC时间

import time
print(time.gmtime())	# 未传入sec参数

# 输出:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=15, tm_hour=7, tm_min=6, tm_sec=30

time.localtime()

未传入任何参数时,返回当前本地时间

time.strftime(format[, t])

Python time strftime() 函数用于格式化时间,返回以可读字符串表示的当地时间,格式由参数 format 决定。


11 循环、print

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:斐波那契数列

f1 = 1
f2 = 1
for i in range(1,22):		# i = 1,…, 21,不包括22
    print ('%12ld %12ld' % (f1,f2), end=" ")		# 成对输出f1和f2,不换行
    if (i % 3) == 0:		# 如果i是3的倍数则换行
        print ('')
    f1 = f1 + f2			#输出一对后,成对更新
    f2 = f1 + f2

%12ld,长整型,12是输出长整型所占位数。如果不够,为以空格补充
输出为

  		  1           1            2           3            5           8 
         13          21           34          55           89         144 
        233         377          610         987         1597        2584 
       4181        6765        10946       17711        28657       46368 
      75025      121393       196418      317811       514229      832040 
    1346269     2178309      3524578     5702887      9227465    14930352 
   24157817    39088169     63245986   102334155    165580141   267914296 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值