
[TOC]
在Windows上打开文件路径需要进行转义\才能正常进行找出文件,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”:如下面
open('C:\windows\temp\readme.txt', 'r')  #会报错
file1 = open(r'C:\windows\temp\readme.txt', 'r')  #方式1
file1 = open('C:\\windows\\temp\\readme.txt', 'r') #方式21.编程输入程序并且进行验证选择.
#!/usr/bin/python3
#功能:课后作业1
import random
name = input("请输入您的姓名:")
num = input('请输入一个1~100的数中:')
num = int(num)
if num > random.randint(0,100):
    print("恭喜您:" + name,"您输入的数字"+ num +"大于随机数")
else:
    print("不能恭喜您了",name)
####### 结果输出 ##########
#请输入您的姓名:weiyigeek #
#请输入一个1~100的数中:50  #
#不能恭喜您了 weiyigeek    #2.打印输出如下图所示的代码:
#!/usr/bin/python3
#功能:课后作业04
count = input("请输入显示*号的个数:")
count = int(count)
while count:
    print(' ' * (count - 1),'*' * count)
    count = count - 1
else:
    print("打印结束")
####### 结果输出 ##########
#请输入显示*号的个数:10
#          **********
#         *********
#         ********
#        *******
#       ******
#      *****
#     ****
#    ***
#   **
#  *3.改进游戏增加数据类型输入错误判断。 前面使用 type(temp) != type(1) 或者 not isinstance(temp, int) 输入类型判断的;以上方法的思路是正确的,不过似乎忽略了一点儿:就是 input() 的返回值始终是字符串,所以 type(temp) 永远是 < class ‘str’> .
我们解决方法将采用字符串内置模块的方法,如String.isdigit() while not temp.isdigit(): temp = input(“抱歉,您的输入有误,请输入一个整数:”)
#!/usr/bin/python3
#功能:课后作业05
import random
jihui = 3
secret = random.randint(1,10)
print('##############简单的数字游戏###############')
guess  = 0
print("请输入0~10之间的数字:",end='')
while (guess != secret) and (jihui > 0):
    temp = input()
    if temp.isdigit():
        guess = int(temp) 
        if (guess == secret):
            print("您刚好猜中数字:",secret) #猜中则会结束循环
        else:
            if (guess > secret):
                print("MAX 值大了,亲")
            else:
                print("Min 值小了,亲")
            if jihui > 1:
               print("请再尝试一次:",end='')
            else:
                print("请机会用光了")
    else:
        print("对不起,输入有误,需要重新输入。")
    jihui = jihui - 1  # 用户每输入一次,可用机会就-1
else:
    print("游戏结束!")
####### 结果输出 ##########
# ------简单的数字游戏---------
# 请输入0~10之间的数字:5
# Min 值小了,亲
# 请再尝试一次:6
# Min 值小了,亲
# 请再尝试一次:8
# MAX  值大了,亲
# 请机会用光了
# 游戏结束!4.现在的 Python 可以计算很大很大的数据,但是真正的大数据计算可是要靠刚刚的硬件滴,比如:
print(2 ** 2 ** 32)
# 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。
# 设计到幂操作,结果都是惊人滴。
你猜猜为何 print( (2 ** 2) ** 32) 就可以计算出结果呢?
结果:18446744073709551616
我猜想的是 print(2 ** 2 ** 32) 中由于 幂运算符 右边表达式的优先级大于左边表达式的优先级 ,计算的时候会这样:print(2 ** (2 ** 32))  #想想这个是一个多么恐怖的数字5.爱因斯坦难题 有一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。 题目:请编程求解该阶梯至少有多少阶?
##########算法方法1##########
#!/usr/bin/python3
jieti = 7
while 1:
    if ( jieti % 2 == 1) and ( jieti % 3 == 2) and ( jieti % 5 == 4) and ( jieti % 6 == 5) :
        print("至少有 %d 阶梯" %jieti)  #至少有 119 阶梯
        break
    else:
        jieti = jieti + 7 # 根据题意,x一定是7的整数倍,所以每次+ 7
##########算法方法2##########
x = 7
i = 1
flag = 0
while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = 1
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1
if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')6.使用 if elif else 在大多数情况下效率要比全部使用 if 要高,替代了switch…case 的功能;
score = int(input('请输入一个分数:'))
if 80 > score >= 60:
    print('C')
elif 90 > score >= 80:
    print('B')
elif 60 > score >= 0:
    print('D')
elif 100 >= score >= 90:
    print('A')
else:
    print('输入错误!')7.请将以下代码修改为三元操作符实现:
x, y, z = 6, 5, 4
if x < y:  
    small = x
    if z < small:     #先判断外部,再判断内部关系
        small = z
elif y < z:
    small = y
else:
    small = z
###########转换成三元运算符#############
small = x if (x < y and x < z) else (y if y < z else z)7.设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含”*”则不计算在内。
#!/usr/bin/python3
count = 3
password = '123456'
while count:
    temp = input("请输入密码:")
    if '*' in temp:
        continue
    elif temp == password:
        print("输入的密码正确")
        break;
    else:
        count = count - 1
        print("密码输入错误,您还有 %d 次机会" %count)
print("Login Successful")
####### 结果输出 ##########
# 请输入密码:123
# 密码输入错误,您还有 2 次机会
# 请输入密码:*asdsa
# 请输入密码:156454
# 密码输入错误,您还有 1 次机会
# 请输入密码:123456
# 输入的密码正确
# Login Successful8.有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
#!/usr/bin/python3
print('red\tyellow\tgreen')
for red in range(0, 4):
    for yellow in range(0, 4):
        for green in range(2, 7):
            if red + yellow + green == 8:
                # 注意,下边不是字符串拼接,因此不用“+”哦~
                print(red, '\t', yellow, '\t', green)
####### 结果输出 ##########
# red     yellow  green
# 0        2       6
# 0        3       5
# 1        1       6
# 1        2       5
# 1        3       4
# 2        0       6
# 2        1       5
# 2        2       4
# 2        3       3
# 3        0       5
# 3        1       4
# 3        2       3
# 3        3       2注释:range(2, 7) 是产生 [2, 3, 4, 5, 6] 这 5 个数,绿球不能是 1 个,因为如果绿球是 1 个的话,红球 + 黄球需要有 7 个才能符合题意,而红球和黄球每种只有 3 个,因此是 range(2, 7)
9.按照特定的格式进行输出列值;
#方法一:
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
count = 0
length = len(member)
while count < length:
    print(member[count], member[count+1])
    count += 2
#方法二:
length = len(member)
for each in range(len(length)):
    if each%2 == 0:
        print(member[each], member[each+1])
####### 结果输出 ##########
# 小甲鱼 88
# 黑夜 90
# 迷途 85
# 怡静 90
# 秋舞斜阳 88
# 小甲鱼 88
# 黑夜 90
# 迷途 85
# 怡静 90
# 秋舞斜阳 8810.编写密码强度验证
#!/usr/bin/python3
#密码验证:强度检查
# 密码安全性检查代码
#
# 低级密码要求:
#   1. 密码由单纯的数字或字母组成
#   2. 密码长度小于等于8位
#
# 中级密码要求:
#   1. 密码必须由数字、字母或特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位
symbols = r'''`[email protected]#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
password = input("输入检查的密码:")
length = len(password)
while (password.isspace() or length == 0):
    password = input("您输入的密码为空(或空格),请重新输入:")
    length = len(length)
#判断字符串长度
if length <= 8:
    flag_len = 1
elif length <16:
    flag_len = 2
else:
    flag_len = 3
flag_con = 0
#判断是否包含特殊字符
for each in password:
    if each in symbols:
        flag_con += 1
        break;
#判断是否包含字母
for each in password:
    if each in chars:
        flag_con += 1
        break;
#判断是否包含数字
for each in password:
    if each in nums:
        flag_con += 1
        break;
#结果打印
while 1:
    print("您的密码评级:",end="")
    if flag_len == 1 or flag_con == 1: 
        print("低")
    elif flag_len == 3 and flag_con == 3 and password[0].isalpha():
        print("高")
        break   #这里的break用得精辟
    else:
        print("中")
    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break
########### 结果输出 ##########
# 输入检查的密码:Weiyi2000Geek16!
# 您的密码评级:高
# 输入检查的密码:[email protected]
# 您的密码评级:中
# 请按以下方式提升您的密码安全级别:
#         1. 密码必须由数字、字母及特殊字符三种组合
#         2. 密码只能由字母开头
#         3. 密码长度不能低于16位11.进制转换案例。
#!/usr/bin/python3
#方式1:进制转换
while 1:
    temp = input("请输入一个整数(输入Q退出程序):")
    if temp == 'Q':
        break
    temp = int(temp)
    print("十进制 -> 十六进制 : %d -> 0x%x" %(temp,temp))
    print("十进制 -> 八进制 : %d -> 0o%o" %(temp,temp))
    print("十进制 -> 二进制 : %d ->" %temp, bin(temp))
#方式2:递归方式 list
listbin = []
def binary(x):
    if x != 1:
        binary(x // 2)
        return listbin.append(x % 2)
    else:
        return listbin.append(1)
value = input("输入一个整形值:")
value = int(value)
binary(value)
for each in listbin:
    print(each,end="")
else:
    print("")
#方式3:更精简的方法 str
def Dec2Bin(dec):
    result = ''
    if dec:
        result = Dec2Bin(dec//2)   
        return result + str(dec%2)  #精辟之处
    else:
        return result   #先记录第一个值
print(Dec2Bin(62))
########### 结果输出 ##########
# 请输入一个整数(输入Q退出程序):255
# 十进制 -> 十六进制 : 255 -> 0xff
# 十进制 -> 八进制 : 255 -> 0o377
# 十进制 -> 二进制 : 255 -> 0b11111111