关于python的30个小实验(一)

题目:输入一个正整数,输出各个位数之和

num=input('请输入一个自然数')
print(sum(map(int,num)))

map函数根据提供的函数对指定的序列做映射,定义:map(function, sequence[,sequence,...])--->list;对sequence中的item依次执行function(item),见执行结果组成一个List返回

运行结果:

题目:输入一个自然数,输出它的二进制,八进制,十六进制

#python提供了非常简单的进制转换功能,bin(),oct(),hex()
num = int(input('请输入一个自然数:'))
print('二进制:', bin(num))
print('八进制:', oct(num))
print('十六进制:', hex(num))

运行结果:

题目:模拟蒙特.卡罗计算方法计算圆周率的近似值

#蒙特卡罗的方法计算圆周率
from random import random
times=int(input("请输入掷飞镖的次数:"))
hits=0
for i in range(times):
    x=random()
    y=random()
    if x*x+y*y<=1:
        hits+=1
print('击中次数',hits)
print('圆周率近似值',4.0*hits/times)

运行结果:

题目:输入一个大于2的自然数,输出小于该数的所有素数组成的列表

Max_Num=int(input('请输入一个大于2的自然数: '))
lst=list(range(2,Max_Num))
#输入的数的最大平方根
m=int(Max_Num**0.5)
#enumerate是python的内置函数,意思是枚举、列举,用于遍历序列中的元素以及它们的索引。
#filter函数对指定的序列进行过滤操作。定义:filter(function or None, sequence) -> list, tuple, or string
#对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回
for index,value in enumerate(lst):
    #如果当前数字已大于最大整数的平方根,结束
    if value>m:
        break
    #对该位置之后的元素进行过滤
    lst[index+1:]=filter(lambda x:x%value!=0,lst[index+1:])
print(lst)
#指定enumerate的索引从1开始
for index,value in enumerate(lst,1):
    #如果当前数字已大于最大整数的平方根,结束
    if value>m:
        break
    #对该位置之后的元素进行过滤
    lst[index:]=filter(lambda x:x%value!=0,lst[index:])
print(lst)
#lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_32888153/article/details/84307754