1,编程实现9*9乘法表

2,用函数实现100-200里面的所有素数。

提示:素数的特征是除了1和其本身能被整除,其它数都不能被整除的数

3,请用一个函数实现一个判断用户输入的年份是否是闰年的程序


提示:
1.能被400整除的年份 
2.能被4整除,但是不能被100整除的年份
以上2种方法满足一种即为闰年

4,用函数实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去


20180818
是今年第x天

自己写的小白级代码:

def fun():
    monthList =[31,28,31,30,31,30,31,31,30,31,30,31]
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入天数:"))
    if year%400==0 and month>2:
        day+=1
    sumNum = 0
    i = month-1
    while i>0:
        sumNum += monthList[i-1]
        i -= 1
    result = sumNum + day
    print("%d年%d月%d日是%d年的第%d"%(year,month,day,year,result))

fun()

测试:

============== RESTART: C:/Users/Administrator/Desktop/demo.py ==============
请输入年份:2000
请输入月份:3
请输入天数:1
2000年3月2日是今年的第61

5,简单的文件备份(输入文件的名字,然后程序自动完成对文件的备份)

代码如下:

#制作文件备份
oldFileName = input("请输入要拷贝的文件名字:")
oldFile = open(C:\Python37\oldFileName, "r")

#如果打开文件
if oldFile:
    #提取文件后缀
    fileFlagNum = oldFileName.rfind(".")
if fileFlagNum > 0 :
    fileFlag = oldFileName[fileFlagNum:]

#组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + "[附件]" + fileFlag

#创建新的文件
newFile = open(newFileName, "w")
#把旧的文件数据一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
    newFile.write(lineContent)

#关闭文件
oldFile.close()
newFile.close()

6 , 请写出一段 Python 代码实现分组一个 list 里面的元素,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]

我的代码:

[[x,y,z] for x in range(1,99,3) for y in range(x+1,x+2) for z in range(y+1,y+2)]

结果如下:

>>> [[x,y,z] for x in range(1,99,3) for y in range(x+1,x+2) for z in range(y+1,y+2)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24], [25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36], [37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48], [49, 50, 51], [52, 53, 54], [55, 56, 57], [58, 59, 60], [61, 62, 63], [64, 65, 66], [67, 68, 69], [70, 71, 72], [73, 74, 75], [76, 77, 78], [79, 80, 81], [82, 83, 84], [85, 86, 87], [88, 89, 90], [91, 92, 93], [94, 95, 96], [97, 98, 99]]
>>>

7 , 列表去重  例如:a = [1,2,4,2,5,6,5,7,9,9,0]

两种方式:

    1,SET 集合去重

   

def main():
    """列表去重"""
    a = [1,2,4,2,5,6,5,7,9,9,0]
    a = list(set(a))
    print(a)


if __name__ == '__main__':
    main()

SET 去重有个缺点,那就是会打顺序,也就是无需的


    2,字典去重

def main():
    """列表去重"""
    a = [1,2,4,2,5,6,5,7,9,9,0]
    b = {}
    b = b.fromkeys(a) # 会把a列表中的元素变成 字典b的键 由于 键 是唯一的,所以一定不会重复
    c = list(b.keys())
    print(c)

if __name__ == '__main__':
    main()

8,运算符的坑,代码如下:

temp = input("请输入:")
if temp == "YES" or "yes":
    print("if 执行了")
else:
    print("else 执行了")

正常思维:如果输入 YES 或者 yes  就会执行if 语句, 如果输入其它的字符串,就会执行 else 语句

验证代码:

temp = input("请输入:")
if temp == "YES" or "yes":
    print("if 执行了")
else:
    print("else 执行了")
请输入:>? 6666
if 执行了

分析:

or 运算符只要两边有一个为true 就会返回true

temp == “YES”or "yes"   因为 == 运算符优先度比or运算符的高,搜先会判断or左边的表达式,如果左边的为结果true 右边的就不用计算了,左边结果为false的话,就会计算右边的结果,右边的为一个字符串“yes”,它是一个有值的字符串,所以or右边的结果是true。

表达能力不强,说的有点云里雾里的。最简单最直接的就是把

if temp == "YES" or "yes":

看成

if (temp == "YES") or ("yes"):

你就会发现 or 右边的结果会一直为 true ,不管输入我们输入什么字符串,都会执行 if 语句

附:运算符的优先级  顺序依次递增

Lambda  #运算优先级最低
逻辑运算符: or
逻辑运算符: and
逻辑运算符:not
成员测试: in, not in
同一性测试: is, is not
比较: <, <=, >, >=, !=, ==
按位或: |
按位异或: ^
按位与: &
移位: << ,>>
加法与减法: + ,-
乘法、除法与取余: *, /, %
正负号: +x, -x