python 简单计算练习题(1)

纸上得来终觉浅,还是要去多练习

1.list[0,1,2,3,4,5],索引为偶数的返回值产生一个新的列表

b=[]

a= [0,1,2,3,4,5]

for i in range(6):

if i %2 ==0:

b.append(a[i]*2)

print(b)

[0, 4, 8]

b=[] #将原列表值为偶数生成新的列表

a= [0,1,2,3,4,5]

for i in a:

if i%2 ==0:

b.append(i)

print(b)

[0, 2, 4]

2.有5个数字0,1,2,3,4能组成多少个互不相同的且无重复数字的三位数,各是多少?

num_list =[]

for i in range(1,5): #如题目有0,第一位不能为0

for j in range(5):

for k in range(5):

if (i !=j) and (j !=k) and (k !=i):

ijk = i *100 + j *10 + k

num_list.append(ijk)

print("所有的不重复数字为:\n%s" %num_list) #只打印最后一个

print("\n一共有%d个不重复三位数" %len(num_list))

所有的不重复数字为:

[102, 103, 104, 120, 123, 124, 130, 132, 134, 140, 142, 143, 201, 203, 204, 210, 213, 214, 230, 231, 234, 240, 241, 243, 301, 302, 304, 310, 312, 314, 320, 321, 324, 340, 341, 342, 401, 402, 403, 410, 412, 413, 420, 421, 423, 430, 431, 432]

一共有48个不重复三位数

3.输入N个整数,把这N个数从大到小输出

# 错误示范:没有考虑输入不是整数的情况

num_list = []

while True:

inmsg = input("输入一个整数:")

if inmsg == 'Q' or inmsg == 'q':

num_list.sort()

print(num_list)

elif isinstance(eval(inmsg),int):

num_list.append(eval(inmsg))

输入一个整数:1

输入一个整数:2

输入一个整数:5

输入一个整数:w

-----------------------------NameError ()NameError: name 'w' is not defined

这里才是正确示范

num_list = []

i =1

while True:

inmsg = input("请输入第%d个整数,输入q结束输入开始排序:" %i)

if inmsg.isdigit():

i += 1

inmsg = eval(inmsg)

num_list.append(inmsg)

elif inmsg == "q" or inmsg == "Q" :

num_list.sort()

print("一共%d个整数排序结果如下:\n"%len(num_list) )

print(num_list)

resatrt = input("是否继续加入数字排序 Y|N:" )

if resatrt =="Y"or resatrt =="y":

continue

else:

break

else:

print("输入不合法,请输入数字")

# 如果扩展到支持输入整数小数进行排序 有以下问题

# isdigit是全部字符都只能是数字,不能输入小数

# 如果用类型转化会报错 不会执行到 elif type(float(inmsg))== float or type(int(inmsg))== int

# 看同样的问题有人说可以用try except 执行,以后学到了再回来看这个题

# 下次扩展到支持重新加入或者继续加入数字进行排序

#--------以下是某人写的版本正则支持输入小数--------

import re

num_list = []

while True:

inmsg = input("输入一个整数:")

matchObj = re.match(r'(^[1-9]([0-9]+)?(\.[0-9])?$)|(^(0)$)|(^[0-9]\.[0-9]([0-9])?$)', inmsg, re.M|re.I)

if inmsg == 'Q' or inmsg == 'q':

num_list.sort()

print(num_list)

elif matchObj:

num_list.append(eval(inmsg))

else:

print("格式错误")

请输入第1个整数,输入q结束输入开始排序:433

请输入第2个整数,输入q结束输入开始排序:1

请输入第3个整数,输入q结束输入开始排序:q

一共2个整数排序结果如下:

[1, 433]

是否继续加入数字排序 Y|N:y

请输入第3个整数,输入q结束输入开始排序:53

请输入第4个整数,输入q结束输入开始排序:879

请输入第5个整数,输入q结束输入开始排序:q

一共4个整数排序结果如下:

[1, 53, 433, 879]

是否继续加入数字排序 Y|N:n

5.暂停一秒输入,并格式化当前时间(time的sleep函数)

import time

print (time.strftime(' %A %Y-%m-%d %H:%M:%S',time.localtime(time.time())))

time.sleep(1)

print (time.strftime(' %A %Y-%m-%d %H:%M:%S',time.localtime(time.time())))

time.sleep(1)

print (time.strftime(' %A %Y-%m-%d %H:%M:%S',time.localtime(time.time())))

Tuesday 2019-02-19 18:55:09

Tuesday 2019-02-19 18:55:10

Tuesday 2019-02-19 18:55:11

6.打印出1000以内的水仙花数,例如153=1的三次方+5的三次方+3的三次方

# 方法一

num_list =[]

for h in range(10,1000):

if h == (h//100)**3+(h//10%10)**3+(h%10)**3: #分别取到这个数的三个数字

num_list.append(h)

print("水仙花数为:%s"%num_list)

# 方法二

num_list =[]

for i in range(1,10):

for j in range(10):

for k in range(10):

if i*100+j*10+k == i**3+j**3+k**3:

num_list.append(i*100+j*10+k)

print("水仙花数为:%s"%num_list)

水仙花数为:[153, 370, 371, 407]

水仙花数为:[153, 370, 371, 407]

7.统计输入字符的英文字母,空格,数字和其他字符的个数

msg = input("输入信息计算字符数:")

ct_num = 0 #计算数字

ct_alp = 0 #计算字母

ct_spa = 0 #空格

ct_else = 0 #特殊字符

for i in msg:

if i.isdigit():

ct_num += 1

elif i.isalpha():

ct_alp += 1

elif i.isspace():

ct_spa += 1

else:

ct_else += 1

print("\n字符总长度%d\n number = %d\n letter = %d\n space = %d\n else = %d"%(len(msg),ct_num,ct_alp,ct_spa,ct_else))

输入信息计算字符数:\n字符总长度%d\n number = %d\n letter = %d\

字符总长度38

number = 0

letter = 23

space = 6

else = 9

未完待续

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190219G16JRW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券