2020.03.17
python100例题—51-100
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}