Python基础题目练习

题目

1、求和

程序实现:求1-2+3-4+5-6+7-8…+99的和。

sum = 0
for i in range(1, 100):
    if i % 2 == 0:
        sum -= i
    else:
        sum += i
print(sum)

创建一个循环从1到99,初始化一个sum=0,判断每个数的奇偶数,奇数则用sum相加,偶数则用sum相减。

优化:

sum = 0
for i in range(1, 100):
    sum = sum - i if i % 2 == 0 else sum + i
print(sum)

2、石头剪刀布

玩家与电脑玩石头剪刀布游戏,电脑玩家都随机出拳。1—代表石头,2—代表剪刀,3—代表布。程序提示玩家出拳,并判断电脑赢还是玩家赢。

def transform(i):
    if i == 1:
        return "石头"
    elif i == 2:
        return "剪刀"
    elif i == 3:
        return "布"

print("请不要自讨苦吃输入字母或其他符号")
mypunch = int(input("请出拳:(1---代表石头,2---代表剪刀,3---代表布)\n"))
punch = random.randint(1, 3)
if mypunch == 1 or mypunch == 2 or mypunch == 3:
    if (mypunch == 1 and punch == 2) or (mypunch == 2 and punch == 3) or (mypunch == 3 and punch == 1):
        print("电脑出拳:%s, 而你出拳:%s。\n所以你赢了!" % (transform(punch), transform(mypunch)))
    elif mypunch == punch:
        print("电脑出拳:%s, 而你出拳:%s。\n所以平局!" % (transform(punch), transform(mypunch)))
    else:
        print("电脑出拳:%s, 而你出拳:%s。\n所以你输了!" % (transform(punch), transform(mypunch)))
else:
    print("输入错误!")

用random创建三个随机数来代表电脑的出拳,然后读取自己输入的数值,来判断自己是否赢了和输入的数是否出错,然后创建了一个transform函数将数字转化为“石头”“剪刀”“布”来输出。

可以使用循环持续玩。

3、打印完全平方数

完全平方数,就是可以表示为某个整数的平方的数,例如9,是3的平方,16是4的平方,9和16都是完全平方数,请打印10000以内的完全平方数。

for i in range(1, 101):
    print(i**2)

如果直接创建从1到10000的循环,则运行次数过多。
已知10000开方为100,所以创建一个从1到100的循环。直接输出i的平方。

4、编写一个函数

  1. 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n。
def odd(n):
    sum = 0.0
    for i in range(1, n+1, 2):
        sum += 1.0/i
    print(sum)


def even(n):
    sum = 0.0
    for i in range(2, n + 1, 2):
        sum += 1.0 / i
    print(sum)


number = int(input("请输入一个整数:"))
if number % 2 == 0:
    even(number)
else:
    odd(number)

按照题目要求,创建了两个函数,一个偶数一个奇数。

5、求平方和

对于一个十进制的正整数,定义f(n)为其各位数字的平方和,如:
f(13) = 1**2 + 3**2 = 10
f(207) = 2**2 + 0**2 + 7**2 = 53
下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b, 且k*f(n)=n。
例如:输入: 51 5000 10000
输出: 3

def f(n):
    n = str(n)
    sum = 0
    for item in n:
        sum += int(item) ** 2
    return sum


k, a, b = input("请输入三个正整数k, a, b:\n").split()
count = 0
for i in range(int(a), int(b) + 1):
    if int(k) * f(i) == i:
        count += 1
print(count)

按照题目思想,创建一个f(n)函数,将n字符化(方便迭代),将每个数提取出来整数化求平方和。从键盘上提取三个数,赋给k, a, b然后创建循环从a到b,判断k*f(n)=n否,如果等,则叠加一次。

6、猜数字

猜数字:
a. 随机产生一个1~100范围内的数字;
b. 让用户猜这个数字,并读取用户的输入;
c. 当用户没有猜对的时候:提示用户的输入太大或太小;
d. 再次读取用户的输入,当用户猜对的时候,输出用户猜测的次数。

import random
number = random.randint(1, 100)
flag = True
sum = 0
while flag:
    mynumber = int(input("请你猜一个数字(1~100):\n"))
    if mynumber > number:
        print("你猜的数大了")
    elif mynumber < number:
        print("你猜的数小了")
    else:
        print("您猜对了!!!")
        flag = False
    sum += 1
print("您一共猜了%d次成功猜到答案!" % sum)

运用random随机生成1~100的数,然后与你输入的数做对比并且提示。按照二分法,则最多7次就能猜对数字。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值