python阿凡提麦⼦问题_Python编程问题,⽤于循环和列表派
⽣的使⽤(Afantiv。。。
# -*- coding: utf-8 -*-
"""
Spyder Editorlambda编程
This is a temporary script file.
"""
"""1. 阿凡提与国王⽐赛下棋,国王说要是⾃⼰输了的话阿凡提想要什么他都可以拿得出来。
阿凡提说那就要点⽶吧,棋盘⼀共64个⼩格⼦,在第⼀个格⼦⾥放1粒⽶,
第⼆个格⼦⾥放2粒⽶,第三个格⼦⾥放4粒⽶,第四个格⼦⾥放8粒⽶,
以此类推,后⾯每个格⼦⾥的⽶都是前⼀个格⼦⾥的2倍,⼀直把64个格⼦都放满。
需要多少粒⽶呢?(要求 for 循环实现,和第⼆种⽅法:列表推导式实现)
"""
temp = 1 #for循环
sum1 = 1
for i in range(1,64):
temp = temp * 2
sum1 = sum1 + temp
print("⽤for循环实现:",sum1)
#del sum1
alist = [2 ** x for x in range(0,64) ] #列表推导式
print("⽤列表推导式实现:",sum(alist))
del alist
print("⽤进制转化实现:",int ('1' * 64, 2)) #⼆进制转化成整型
"""
2. 求1到9中的所有偶数 (要求 for 循环实现,和第⼆种⽅法:列表推导式实现)
"""
print("⽤for循环实现:")
for i in range (1,10): #for循环
if i % 2 == 0:
print(i, end = " ")
print()
print("⽤列表推导式实现:")
alist = [x for x in range(1,10) if(x % 2 == 0)] #列表推导式
print(alist)
del alist
"""
3. alist= [' aa', ' bb ', 'cc ']
(1)不增加内存空间,去掉空格,并输出原列表。
"""
alist = [' aa', ' bb', 'cc '] #for循环
for i in range(len(alist)):
alist[i] = alist[i].strip()
print("⽤for循环实现:",alist)
del alist
alist = [' aa', ' bb', 'cc '] #列表推导式
alist = [alist[i].strip() for i in range(len(alist)) ]
print("⽤列表推导式实现:",alist)
del alist
"""
(2) ⽣成⼀个新列表,去掉空格,并输出新列表
(1)(2)均要求 for 循环实现和列表推导式两种⽅法实现
"""
alist = [' aa', ' bb', 'cc ']
blist = [] #for循环
for i in alist:
blist.append(i.strip())
print("⽤for循环实现:",blist)
del blist
blist = [x.strip() for x in alist] #列表推导式
print("⽤列表推导式实现:",blist)
del alist
del blist
"""
4. 计算1+2+。+100的数值,赋值给某变量,并输出,使⽤lambda表达式实现"""
from functools import reduce
seq = list(range(1,101)) #lambda表达式
x = reduce(lambda x, y: x + y, seq)
print(x)
"""
5 a=1234,取每⼀位,并输出,以,分开,如1,2,3,4。 使⽤lamdba表达式实现。
"""
a = 1234
b,c,d,e = map(int,str(a))
print(b,c,d,e,sep=",")
g = lambda x: map(int,str(x)) #lambda表达式
b,c,d,e = g(a)
print(b,c,d,e,sep=",")
""""
6 综合:使⽤函数定义、循环,判断语句,列表和序列解包(赋值时)实现斐波那契数列。
要求:输⼊参数为数列长度,输出为数列。从f(0),或者从f(1)开始都可以。
斐波那契数列(Fibonacci sequence),⼜称黄⾦分割数列、
因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)
以兔⼦繁殖为例⼦⽽引⼊,故⼜称为“兔⼦数列”,指的是这样⼀个数列:
1、1、
2、
3、5、8、13、21、3
4、……在数学上,斐波纳契数列以如下被以递归的⽅法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
注意:序列解包法赋值时:
如 a, b = b, a+b
执⾏情况为:a和b同时被赋值。没有先后。
例如 当前a=3,b=5
执⾏ a, b = b, a+b后,
结果为:a=5, b=8
"""
alist = [1,1]
n = int(input("(⽅法⼀:公式法)输⼊⼀个整数,代表列表长度: "))
if n == 1:
print([1])
else :
for i in range(2,n):
alist.append(alist[i - 1] + alist[i - 2])
print(alist)
del alist
alist = [1]
a = 1
b = 1
n = int(input("(⽅法⼆:序列解包)输⼊⼀个整数,代表列表长度: ")) for i in range(1,n):
if n == 1:
break
else:
alist.append(b)
a,b = b, a + b
print(alist)
"""
7 课本55页 第⼀⾏的列表推导式 要求⽤双重循环实现
"""
x = [1,2,3]
y = [3,1,4]
z = []
for i in x:
if i == 1 :
for j in y:
if j != i :
z.append((i,j))
print(z)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。