题目
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、编写一个函数
- 编写一个函数,输入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次就能猜对数字。