Python100例实训(一)

昨天晚上,想到自己作为21世纪的大学生,编程能力居然基本为0,这是一件令人遗憾的事情,如果现在好好学好一门编程语言,一定会在未来有用武之地。否则,将会有很多遗憾。

所以决定从python入手。都说python入手容易,但是坚持和毅力是目前大多数人所缺乏的。

古人之观于天地、山川、草木、虫鱼、鸟兽,往往有得,以其求思之深而无不在也。
夫夷以近,则游者众;
险以远,则至者少。
而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。
有志矣,不随以止也,然力不足者,亦不能至也。
有志与力,而又不随以怠,至于幽暗昏惑而无物以相之,亦不能至也。
然力足以至焉,于人为可讥,而在己为有悔;
尽吾志也而不能至者,可以无悔矣,其孰能讥之乎?

正如上文所说,尽吾志也不能至者,可以无悔矣!

Practice makes perfect

所以下决心,一定要把python100实例撸一遍,虽然,这些题目对于大佬们来说太容易了,可是小白撸一遍的话,理解,记忆,思维,应该都有很大的提升的。在此立贴为誓,本人誓将python100个实例在2018.09.01之前认真撸一遍,并且做好笔记,如果做不到,单身狗永不脱单!


Python 实例

点击打开链接

Python 实例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等后跟圆括号,昨天在写程序的时候,把list,dict等后跟的也错写成了(),应该是中括号。


Python 实例2

企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

#p = 120000
p = int(input('请输入利润:'))
profit = [1000000,600000,400000,200000,100000,0]
ratio = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if p>profit[idx]:
        r += (p - profit[idx])*ratio[idx]
        print ((p - profit[idx])*ratio[idx])
        p = profit[idx]
print(r)

必须承认,自己一开始想的算法很常规也很笨,就是用很多个if-else条件判断,然后计算。

构思之后,看了一下答案,惊为天人,很巧妙!

尤其是 for循环中的if判断,令p = profit[idx]免去了很多麻烦


Python 实例3

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

import math

x = range(0,1000000)
for i in x:
    y = i+100
    if math.sqrt(y)%2 == 1 or math.sqrt(y)%2 == 0:
        z = y + 168
        if math.sqrt(z)%2 == 1 or math.sqrt(z)%2 == 0:
            print(i,y,z)
首先,看到这种题目还是有点怵的,之前基本上是零基础,遇到这种需要数学的题,心里有莫名的恐惧感。可是,真正一分析下来,其实并不需要多高深的数学知识就可以解决。完全平方数开根号后必须要是一个整数,怎么保证一个数是整数?整数除以2的余数一定为1或0,所以通过这个判断,用循环一个个整数遍历,满足条件的就是答案。

Python 实例4

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

dayth = 0
inputyear = int(input('Please enter the YEAR:\n'))
inputmonth = int(input('Please enter the MONTH:\n'))
inputday = int(input('Please enter the DAY:\n'))

daysOFmonthP = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
daysOFmonthR = {1: 31, 2: 29, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}

if (inputyear % 4 == 0 or inputyear % 400 == 0) and inputyear % 100 != 0:
    alldays = 366
    monthDaydict = daysOFmonthR
else:
    alldays = 365
    monthDaydict = daysOFmonthP

for i in range(1, inputmonth):
    dayth = dayth + monthDaydict[i]

print('The day is %dth day in the year' % (dayth+inputday))


字典的键居然还可以是int,之前一直以为只能是 字符串类型,比如:{'a':1}。果然实践出真知。

记得之前的程序课上,遇到这种题是很害怕的,觉得自己不可能写出来。然而,仔细看看,发现其实不难。从中明白了一个道理,其实很多事情是被事物的表面吓到了,根本没有那么可怕。不动手去做,怎么就知道自己做不出来?王侯将相宁有种乎?(

一本正经的胡说八道,手动滑稽)



Python 实例5

第一种:用sorted函数

a = int(input('Please enter the first number:\n'))
b = int(input('Please enter the first number:\n'))
c = int(input('Please enter the first number:\n'))
list1 = [a,b,c]
list2 = sorted(list1)
print(list2)

第二种:用sort

a = int(input('Please enter the first number:\n'))
b = int(input('Please enter the first number:\n'))
c = int(input('Please enter the first number:\n'))

list1 = [a,b,c]
list2 = list1[:]

d = list2
e = list2.sort()
#print(type(d))
print(e)


在写程序时,发现list2 = list1.sort()之后,list2还是None!出人意料。通过切片操作就好了。

y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。



下面的写法就可以打印出来

#p = 120000
但是这一种就打印不出来!?
python3中list用了sort()方法后是None

展开阅读全文

没有更多推荐了,返回首页