Python 例题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



一·抽奖游戏

牛牛在牛客网举行了抽奖游戏,他定义了一个幸运数字,所有人都有无限制次机会可以去猜幸运数字,直到有人猜中为止。当然有时候太难猜了,所有人经过很多次都没有猜对,这道题就被放弃了。因此请你写一个程序,输入多个数字,请你依次检验是否为牛牛的幸运数字,若是则输出“Congratulations!”,若没有人猜到幸运数字,则输出“Give up!”。(假设本轮幸运数字为3)

连续多行,每行输入一个猜测的数字,输入数字为负数则表示放弃。

输出字符串"Congratulations!"或者"Give up!

n = int(input("请输入幸运数字:"))
while n >= 0:
    if n == 3:
        print("祝贺!")
        break
    else:
        n = int(input("请输入幸运数字:"))
while n < 0:
    print("放弃!")
    break            

二 猴子香蕉问题

有一堆香蕉,一只猴子每天吃一半加一个,第六天还剩1个,问这堆香蕉原来有多少个?

for i in range(1,1000):
    k1 = i
    k2 = k1/2-1 
    k3 = k2/2-1
    k4 = k3/2-1
    k5 = k4/2-1
    if k5/2-1 == 1:
        print("猴子第一天一共有"+str(i)+"个香蕉")
        break

三 打印菱形

用while循环打印菱形

n = int(input("请输入层数(层数为奇数):")) # n定义为层数,n为奇数
i = 1 # i定义为行数
k = int((n+1)/2)#定义为第k行

while i <= k:#上半部分
    print(" "*(k-i), end="")
    print("*"*(2*i-1))
    i += 1
    
i = n-1#下半部分
while i >= 1:
    j = 1 #打印空格
    while j <= n - i:
        print(" ", end="")
        j += 2
    j = 1 #打印*号   
    while j <= i-1:
        print("*",end="")
        j += 1
    print()   
    i -= 2     

四 打印字符串

创建一个依次包含字符串'P'、'y'、't'、'h'、'o'和'n'的列表my_list,

使用print()语句一行打印字符串'Here is the original list:',再直接使用print()语句把刚刚创建的列表my_list整个打印出来,

输出一个换行,再使用print()语句一行打印字符串'The number that my_list has is:',

再使用len()函数获取列表my_list里面有多少个字符串,并使用print()函数一行打印该整数。

按题目描述进行输出即可(注意前后两个输出部分需以一个空行进行分隔)。

Here is the original list:
['P', 'y', 't', 'h', 'o', 'n']

The number that my_list has is:
6

my_list = ["P","y","t","h","o","n"]
print('Here is the original list:')
print("my_list")
print()
print("the number that my_list has is:")
print(len(my_list))

五 牛牛偶数游戏

牛牛正在玩偶数游戏,需要一部分连续的偶数。你能使用列表解析的方法帮牛牛生成n个从2开始的偶数吗?请输出生成的列表。

输入数字n,n为正整数。

输出生成的偶数列表。

输入:

10
复制输出:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
n = int(input("请输入正整数n:"))
k = 2*n                        #设:n=4 由2开头的4个偶数分别是2 4 6 8 最后一个数=2*4=k 
list = [i for i in range(2,k+1,2)]
print(list)
    

1 range函数为左闭右开区间

2.range(2,8,n) 代表区间范围是[2,8) for循环遍历函数时每次打印的数字增加n

五 牛牛数数字

牛牛正在数列表中的数字,他定义了这样一个策略,遇到数字3就跳过,遇到数字8就停下来不再继续数,你能根据输入的列表数字,输出牛牛数了哪些数字吗?

一行输入多个数字,以空格间隔。

每行输出一个牛牛数到的数字。

输入:

1 2 3 4 5 6 7 8 9
复制输出:
1
2
4
5
6
7
n = map(int,input("请输入随机自然数:").split())
for i in n:
	if i == 3:
		pass    #此处可换位continue
	elif i == 8:
		print(i)
		break
	    
	else:
	    print(i)

当一行需要连续数字时:

1.a,b =input().split()

输入a,b时以空格作为分隔符,此时得到的a和b的类型均为字符串

2.a,b = map(int,input().split())

输入a,b时以空格作为分隔符,此时得到的a和b的类型均为整数

六 累加数和平均数

牛牛有一个列表,记录了他和同事们的年龄,你能用for循环遍历链表的每一个元素,将其累加求得他们年龄的总和与平均数吗?

一行输入多个整数,以空格间隔。

输出年龄总和与平均数,平均数保留1位小数,两个数字以空格间隔。

输入:

22 23 24
复制输出:
69 23.0
n = map(int,input("请输入每个同事的年龄:").split(' ')) #使n一行可以输入多个元素

list = [i for i in n]                                 #将n的写入列表
count = 0
for m in list:                                        #遍历列表取出列表中的值
	count += m
print("年龄总和为:"+str(count), end="")
print(" ", end="")
b = len(list)               #len函数输出可迭代对象的长度--该列表内共有多少个元素
avg = count/b    
print("年龄的平均数为:"+str("%.1f"%avg), end="")	 #输出结果保留一位小数


1.len函数取出可迭代对象的长度

2.for 循环遍历列表,逐个取出列表中的元素

3.输出保留一位小数:

                              a=12.34567889
                              print(“%.1f”%a)
                              #保留一位小数--保留两位小数将1f改为2f即可

七 格式化清单

牛妹有一个暑期想吃的东西的清单,你可以把它视作一个Python的list,['apple', 'ice cream', 'watermelon', 'chips', 'hotdogs', 'hotpot']。牛妹决定从清单最后一种食物开始往前吃,每次吃掉一种食物就把它从list中pop掉,请使用while循环依次打印牛妹每次吃掉一种食物后剩余的清单。

每次去除列表末尾元素后,打印整个列表,直到列表为空,每个列表之间换行。

最初的列表不打印,空列表要打印。

n = list(['apple', 'ice cream', 'watermelon', 'chips', 'hotdogs', 'hotpot']) #定义一个列表
m = n.pop()
b = len(n)
while b > 0:
	print("",n)
	k = n.pop()
	b = len(n)

1.list函数:

    n = ["........"]         # n = ["abc"] 

                                   print(n)        #输出[abc]

    n = list(["......."])    # n = list(["abc"])             n = list("abc")

                                   print(n)  #输出[abc]      print(n) #输出["a","b","c"]

2.pop函数

 list.pop()     #默认删除列表最后一个元素

 list.pop(1)   #删除列表第一个元素    -1代表删除列表倒数第一个元素

3.使用pop函数后print函数用法:

           print("",list)

八.列表的最值运算

     牛牛给了牛妹一个一串无规则的数字,牛妹将其转换成列表后,使用max和min函数快速的找到了这些数字的最值,你能用Python代码实现一下吗?

要求:输入一行多个整数,数字之间以空格间隔。输出最值

示例:

输入:

3 5 6 9 10 6 2
输出:2

            10    

n = map(int, input("随机输入一串数字:").split())
b = list(n)

def m_list():
  ma = max(b)
  mi = min(b)
  print(ma)
  print(mi)


m_list()

九.公式计算器

牛牛听说Python中有一个很神奇的函数eval(),只要输入的字符串是一个公式,它能够直接计算这个公式的值。

现牛牛以字符串地形式输入一个公式,请你使用eval()计算结果。

以字符串的形式输入公式,包括加减乘幂四种运算,数字都是整数,有正有负有零

输入:3 * 7

输出:21

n = input("请输入公式:")

print(eval(n))

十.斐波那契数列

输入描述:输入斐波那契数列对应的项

                   6

输出描述:输出斐波那契数列对应项对应的数字

                  8

n = int(input("请输入斐波那契数列的一个项:"))


def fibonacci(n):
    if n ==0 or n== 1:
        return n
    return fibonacci(n-1)+fibonacci(n-2)  
           #对应项=前两个项对应的数的和
           #当输入的项不为0和1时,继续引用fiboncci()函数
 
print(fibonacci(n)) 

输入:6

输出:8

第6项=第5项+第4项   8

第5项=第4项+第3项   5

第4项=第3项+第2项   3

第3项=第2项+第1项   2

第2项=第0项+第1项   1

第1项=1 第0项=0

十一.猜数字游戏

电脑随机一个范围内的数字,用户输入数据判断,如果数字大了,提供”数字大了“

 成功之后,加上用户是否继续功能

#定义一个函数用于输入数字
def  put_num(): 
   n = int(input("请输入一个数字:"))
   if n in range(0,12):                               #判断输入的数字是否在游戏规则内
      m = int(input("请输入{1}是/{2}否继续游戏:"))     #判断是否继续游戏
   
      if m == 1:
         return put_num()                             #重新执行函数继续游戏
      elif m == 2:
         print("游戏结束")                             
   elif n > 11:                                       #判断输入的数字是否在游戏规则内                         
      print("数字大了")
      return put_num()
put_num()      
使用return 函数将put_num()函数作为返回值返回

 十二.不死兔子问题

  买回来一对刚出生兔子,刚出生兔子需要四个月成年,成年的兔子每一个会生一对兔子

 问第n个月后,共有多少个对兔子

n = int(input("请输入为4的倍数的月数:"))
i = n/4
def jiecheng(i):
    if i ==1:
        return 4
    elif i > 1:
        return i*jiecheng(i-1)
print(jiecheng(i))       
        

 使用return 函数将函数作为返回值计算阶乘

十三.求和问题

求100以内能不能3整除的数的和

n = int(input("请输入区间最大值:"))
num_list = []
for i in range(1,n+1):
	if i % 3 > 0:
		num_list.append(i)  #将满足条件的 i装入列表容器
count = sum(i for i in num_list)  #使用sum函数针对从列表中遍历出来的数求和
print(count)

本题遗忘知识点:

1.列表容器添加元素的方法:list.append(i)

2.sum(i for i in num_list)  #使用sum函数针对从列表中遍历出来的数求和

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北 染 星 辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值