Python3学习笔记(python100例-100)

2020.03.17

python100例题—51-100

python100例

51.题目: 学习使用按位与 & 。
解析:两个操作数据的二进制‘与’运算。
代码:

a = 4
b = 7
print('a & b = %d' % (a&b))

52.题目: 学习使用按位或 | 。
解析:两个操作数据的二进制‘或’运算。
代码:

a = 3
b = 8
c = a|b
print('a | b = %d' % c)

53.题目: 学习使用按位异或 ^ 。
解析:两个操作数据的二进制‘异或’运算。
代码:

a = 3
b = 8
c = a^b
print('a | b = %d' % c)

54.题目: 取一个整数a从右端开始的4〜7位。
解析:将其转换成二进制,再取位。
代码:

a = int(input('请输入一个数:'))
b = bin(a).replace('0b','')
if len(b) < 4:
    print('0000')
elif len(b) < 7:
    c = 7 - len(b)
    print('0'*c,end='')
    for i in range(0,len(b)-3):
        print(b[i],end='')
else:
    for i in range(3,7):
        print(b[i],end='')

55.题目: 学习使用按位取反~。
解析:两个操作数据的二进制‘取反’运算。
代码:

a = 8
print(~a)

运行结果:

-9

56-59 画图
略。

60.题目: 计算字符串长度。
代码:

s = 'dasfdadgdva'
print(len(s))

运行结果:

11

61.题目: 打印出杨辉三角形(要求打印出10行如下图)。
解析:使用二维数组。
代码:

num=input('请输入行数:')
num =int(num)

list1 =[]
for n in range(num):
    row =[1]
    list1.append(row)

    if n ==0:
        print(row)
        continue
    for m in range(1,n):
        row.append(list1[n - 1][m - 1] + list1[n - 1][m])
    row.append(1)

    print(row)

62.题目: 查找字符串。
解析:find()方法。
代码:

s = 'doandjadoadmaoaboij'
print(s.find('ab'))

运行结果:

14

63-65 画图。
略。

66.题目: 输入3个数a,b,c,按大小顺序输出。 
解析:将三个数存入列表中,然后排序。
代码:

m = []
for i in range(0,3):
    n = int(input("输入一个数:"))
    m.append(n)
m.sort()
print(m)

67.题目: 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
解析:先将第一个数与其他数比较,找出最大值,然后进行交换。
代码:

a = []
for i in range(1,6):
    n = int(input("输入一个数:"))
    a.append(n)

max = 0
min = 0
for i in range(1,5):
    if a[i] > a[max]:
        max = i
a[0],a[max] = a[max],a[0]

for i in range(1,5):
    if a[i] < a[min]:
        min = i
a[4],a[min] = a[min],a[4]

print(a)

68.题目: 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数。
解析:使用pop()方法和insert()方法。
代码:

a = []
n = int(input("n个整数,n="))
for i in range(0,n):
    m = int(input("请输入一个数字:"))
    a.append(m)

m = int(input("向后移m个位置,m="))

for i in range(0,m):
    a.insert(0,a.pop())
    
print(a)

69.题目: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解析:先用一个数组储存原来的序号,再用while循环,考虑3的倍数。
代码:

n = int(input("请问有多少人?n = "))
a = []
for i in range(0,n):
    a.append(i+1)
k = 0
while len(a)>1:
    a_copy = a[:]
    for i in range(0,len(a_copy)):
        k += 1
        if k % 3 == 0:
            a.remove(a_copy[i])
print("最后留下的是原来的%d号" % a[0])

70.题目: 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
解析:直接用len()函数。
代码:

if __name__ == '__main__':
    s = "sdasfsaf"
    print("该字符串的长度为:%d" % len(s))

运行结果:

该字符串的长度为:8

71.题目: 编写input()和output()函数输入,输出5个学生的数据记录。
代码:

n = int(input("有多少学生?n = "))

student = []
for i in range(5):
    student.append(['',''])
    
def input_s(s):
    print("请输入学生的姓名和分数:")
    for i in range(n):
        for j in range(2):
            s[i][j] = input()

def output_s(s):
    for i in range(n):
        for j in range(2):
            print(s[i][j],end=" ")
        print()

if __name__ == '__main__':
    input_s(student)
    output_s(student)

72.题目: 创建一个链表。
代码:

a = []
for i in range(5):
    n = int(input("请输入一个数:"))
    a.append(n)

print(a)

73.题目: 反向输出一个链表。
解析:使用reverse()方法。
代码:

a = []
for i in range(5):
    n = int(input("请输入一个数:"))
    a.append(n)
a.reverse()
print(a)

74.题目: 列表排序及连接。
解析:sort()方法,+号或extend()方法。
代码:

if __name__ == '__main__':
    a = [1,3,2]
    b = [3,4,5]
    a.sort()
    print(a)
 
    # 连接列表 a 与 b
    print(a+b)
    
    # 连接列表 a 与 b
    a.extend(b)
    print(a)

75.题目: 放松一下,算一道简单的题目。
代码:

if __name__ == '__main__':
    for i in range(5):
        n = 0
        if i != 1: n += 1
        if i == 3: n += 1
        if i == 4: n += 1
        if i != 4: n += 1
        if n == 3: print (64 + i)

运行结果:

67

76.题目: 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/+…+1/n。
代码:

num = int(input('请输入一个正整数:'))

def sum_s(n):
    s = 0
    if n % 2 == 0:
        for i in range(1,int(n/2)+1):
            s += 1/(i*2)
    else:
        for i in range(1,int(n/2)+2):
            s += 1/(i*2-1)
    return s

s = sum_s(num)
print(s)

77.题目: 循环输出列表。
代码:

s = ["man","woman","girl","boy","sister"]
for i in s:
    print(i)

78.题目: 找到年龄最大的人,并输出。
解析:使用字典。
代码:

person = {"li":18,"wang":50,"zhang":20,"sun":22}
m = 'li'
for key in person.keys():
    if person[m] < person[key]:
        m = key
 
print('%s,%d' % (m,person[m]))

运行结果:

wang,50

79.题目: 字符串排序。
解析:将字符串存入列表,在进行排序。
代码:

str1 = 'dfdsg'
str2 = 'afsfg'
str3 = 'bsfs'
a = [str1,str2,str3]
print(a)
a.sort()
print(a)

80.题目: 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
解析:反向推导,每一次剩下的都是(x-1)*(4/5)。
代码:

if __name__ == '__main__':
    i = 0
    j = 1
    x = 0
    while (i < 5) :
        x = 4 * j
        for i in range(0,5) :
            if(x%4 != 0) :
                break
            else :
                i += 1
            x = (x/4) * 5 +1
        j += 1
    print(x)

运行结果:

3121

81.题目: 809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
解析:枚举。
代码:

for i in range(10,100):
    x = 809*i
    y = 9*i
    z = 8*i
    if (809*i == 800*i + 9*i) and (x>999 and x<10000) and (y>99 and y<1000) and (z>9 and z<100):
        print(i)

运行结果:

12

82.题目: 八进制转换为十进制。
解析:https://blog.csdn.net/weixin_43353539/article/details/89444838
代码:

n = input()
print(int(n,8))

运行结果:

1010
520

83.题目: 求0—7所能组成的奇数个数。
代码:

if __name__ == '__main__':
    sum = 4
    s = 4
    for j in range(2,9):
        print(sum)
        if j <= 2:
            s *= 7
        else:
            s *= 8
        sum += s
    print('sum = %d' % sum)

84.题目: 连接字符串。
解析:使用join()函数。
代码:

mylist = ['Brazil', 'Russia', 'India', 'China']
print(','.join(mylist))

运行结果:

Brazil,Russia,India,China

85.题目: 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
代码:

num = int(input("请输入一个奇数:"))
s = 9
x = 9
n = 1
k = 0
while n:
    if s % num == 0:
        n = 0
    else:
        k += 1
        s = s + x*(10**k)
print(s)

86.题目: 两个字符串连接程序。
代码:

def con(str1,str2):
    c = str1 + str2
    return c

s1 = 'abcd'
s2 = 'efgh'
print(con(s1,s2))

运行结果:

abcdefgh

87.题目: 回答结果(结构体变量传递)。
代码:

if __name__ == '__main__':
    class student:
        x = 0
        c = 0
    def f(stu):
        stu.x = 20
        stu.c = 'c'
    a= student()
    a.x = 3
    a.c = 'a'
    f(a)
    print(a.x,a.c)

运行结果:

20 c

88.题目: 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
解析:使用随机数。
代码:

import random

for i in range(7):
    num = random.randint(1,50)
    print('*'*num)

89.题目: 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
解析:一步一步的解决,将整数的位数存入列表,再进行操作。
代码:

a = []
n = input("输入4位的整数:")
a = [int(x) for x in str(n)]

for i in range(4):
    a[i] += 5
    a[i] %= 10

for i in range(2):
    a[i],a[3-i] = a[3-i],a[i]
    
for i in a:
    print(i,end='')

运行结果:

输入4位的整数:1234
9876

90.题目: 列表使用实例。
解析:操作列表。
代码:

testList=[10086,'中国移动',[1,2,4,5]]  
  
#访问列表长度  
print (len(testList))  
#到列表结尾  
print (testList[1:])  
#向列表添加元素  
testList.append('i\'m new here!')  
  
print (len(testList))
print (testList[-1]) 
#弹出列表的最后一个元素  
print (testList.pop(1))  
print (len(testList))  
print (testList)  
 
matrix = [[1, 2, 3],  
          [4, 5, 6],  
          [7, 8, 9]]  
print (matrix)  
print (matrix[1])  
col2 = [row[1] for row in matrix]#get a  column from a matrix  
print (col2)  
col2even = [row[1] for row in matrix if  row[1] % 2 == 0]#filter odd item  
print (col2even)

运行结果:

3
['中国移动', [1, 2, 4, 5]]
4
i'm new here!
中国移动
3
[10086, [1, 2, 4, 5], "i'm new here!"]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[4, 5, 6]
[2, 5, 8]
[2, 8]

91.题目: 时间函数举例1。
代码:

import time

print(time.ctime(time.time()))
time.sleep(1)
print(time.asctime(time.localtime(time.time())))
time.sleep(1)
print(time.asctime(time.gmtime(time.time())))

运行结果:

Wed Mar 18 18:51:28 2020
Wed Mar 18 18:51:29 2020
Wed Mar 18 10:51:30 2020

92.题目: 时间函数举例2。
代码:

import time

start = time.time()
for i in range(1000):
    print(i)
end = time.time()
 
print(end - start)

运行结果:

0
1
...
998
999
0.9739069938659668

93.题目: 时间函数举例3。
代码:

import time

start = time.clock()
for i in range(10000):
    print(i)
end = time.clock()
print('different is %6.3f' % (end - start))

94.题目: 时间函数举例4,一个猜数游戏,判断一个人反应快慢。
解析:使用time.time()分别记录猜数字前后的时间,然后相减。
代码:

if __name__ == '__main__':
    import time
    import random
    
    play_it = input('do you want to play it.(\'y\' or \'n\')')
    while play_it == 'y':
        c = input('input a character:\n')
        i = random.randint(0,2**32) % 100
        print ('please input number you guess:\n')
        a = time.time()
        guess = int(input('input your guess:\n'))
        while guess != i:
            if guess > i:
                print ('please input a little smaller')
                guess = int(input('input your guess:\n'))
            else:
                print ('please input a little bigger')
                guess = int(input('input your guess:\n'))
        b = time.time()
        var = (b - a) / 18.2
        print (var)
        # print 'It took you %6.3 seconds' % time.difftime(b,a))
        if var < 15:
            print ('you are very clever!')
        elif var < 25:
            print ('you are normal!')
        else:
            print ('you are stupid!')
        print ('Congradulations')
        print ('The number you guess is %d' % i)
        play_it = input('do you want to play it.')

运行结果:

do you want to play it.('y' or 'n')y
input a character:
0
please input number you guess:

input your guess:
50
please input a little bigger
input your guess:
100
please input a little smaller
input your guess:
80
please input a little smaller
input your guess:
70
please input a little smaller
input your guess:
60
please input a little bigger
input your guess:
65
please input a little bigger
input your guess:
67
please input a little bigger
input your guess:
68
please input a little bigger
input your guess:
69
1.7243989483340756
you are very clever!
Congradulations
The number you guess is 69
do you want to play it.n

95.题目: 字符串日期转换为易读的日期格式。

96.题目: 计算字符串中子串出现的次数。
解析:count()方法。
代码:

if __name__ == '__main__':
    str1 = input('请输入一个字符串:\n')
    str2 = input('请输入一个子字符串:\n')
    n = str1.count(str2)
    print(n)

运行结果:

请输入一个字符串:
fdsfdsaffd
请输入一个子字符串:
ff
1

97.题目: 从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
代码:

if __name__ == '__main__':
    from sys import stdout
    filename = input('输入文件名:\n')
    fp = open(filename,"w")
    ch = input('输入字符串:\n')
    while ch != '#':
        fp.write(ch)
        stdout.write(ch)
        ch = input('')
    fp.close()

运行结果:

输入文件名:
97.txt
输入字符串:
hello
hello
link
link
#

98.题目: 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
代码:

if __name__ == '__main__':
    fp = open('98.txt','w')
    string = input('please input a string:\n')
    string = string.upper()
    fp.write(string)
    fp = open('98.txt','r')
    print (fp.read())
    fp.close()

运行结果:

please input a string:
abcdefg
ABCDEFG

99.题目: 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。
代码:

if __name__ == '__main__':
    import string
    fp = open('99_1.txt')
    a = fp.read()
    fp.close()
 
    fp = open('99_2.txt')
    b = fp.read()
    fp.close()
 
    fp = open('99_3.txt','w')
    l = list(a + b)
    l.sort()
    s = ''
    s = s.join(l)
    fp.write(s)
    fp.close()

100.题目: 列表转换为字典。
代码:

list1 = ['x','y']
list2 = [1,2]
dic = dict(zip(list1,list2))
print(dic)

运行结果:

{'x': 1, 'y': 2}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值