天天看点

Python之路-Day4Python练习

Python练习

1、 使用python输出如下图形,用while循环

# 使用while循环输出如下图形:(必须使用双重while循环实现)
# *
# * *
# * * *
# * * * *
# * * * * *

i = 1
j = 1
while i <= 5:
    while j == i:
        print('* ' * (i-1)+'*')
        j += 1
    i += 1
           

2、 使用python输出如下图形,用while循环

# 使用while循环输出如下图形:(必须使用双重while循环实现)
#     *
#    * *
#   * * *
#  * * * *
# * * * * *

i = 1
while i <= 5:
    j = 1
    while j <= i:
        if j == 1:
            print(" " * (5 - i), end="")
        print("* ", end="")
        j += 1
    print("")
    i += 1
           

3、 过7游戏

# 设计“过7游戏”的程序, 打印出1-100之间除了含7和7的倍数之外的所有数字。
num = []
for i in range(1, 101):
    if i % 7 != 0 and (i +3) % 10 != 0 and i % 10 != 7: 
    # 能被7整除、加3以后能被10整除、被10除以后取整等于7
        num.append(i)
print(num)
           

4、水仙花数

# 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
# 其各个位上数字的立方和等于该数本身。例如:153是一个”水仙花数",
num = []
for i in range(100, 1000):
    a = i // 100
    b = (i - a * 100) // 10
    c = i - a * 100 - b * 10
    if i == a ** 3 + b ** 3 + c ** 3:
        num.append(i)
print(num)
           

5、石头剪刀布

# 使用while、if来完成剪刀石头布程序,要求,
# 当玩家第3次获胜时才退出游戏,否则继续玩。

import random

winNum = 0
while winNum != 3:
    computer = random.randint(1, 3)
    print(computer)
    player = int(input('1是剪刀,2是石头,3是布。请输入你要出的数字:'))
    if (computer == 1 and player == 2) or (computer == 2 and player == 3) or(computer == 3 and player == 1):
        winNum += 1
           

6、 猜数字:游戏随机给出一个0~99(包括0和99)的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。在游戏过程中,记录你最终猜对时所需要的次数,游戏结束后公布结果。 说明:

1~2次猜中,打印你太TM有才了!

3~6次猜中,打印这么快就猜出来了,很聪明嘛!

大于7次猜中,打印猜了半天才猜出来,小同志,尚需努力啊!

猜测次数最多20次。

import random
guessNum = random.randint(0, 99)
print(guessNum)
guessTimes = 0 # 猜的次数
gameTimes = 0 # 游戏运行次数,主要是用来控制游戏状态
game = True # 游戏状态
while gameTimes != 20:
    while game:
        player = int(input('a number:'))
        guessTimes += 1
        gameTimes += 1
        if gameTimes == 20: # 当运行了20次后,关闭游戏
            game = False
        if player != guessNum: # 猜的不对时给出提示
            if player < guessNum:
                print('小了,再一次。')
            elif player > guessNum:
                print('大了,再来一次。')
        else: # 猜对的时候停止游戏,并输出结果
            game = False
            if guessTimes < 2:
                print('你太TM有才了!')
            elif guessTimes < 6:
                print('这么快就猜出来了,很聪明嘛!')
            else:
                print('半天才猜出来,小同志,尚需努力啊!')

            # print(guessTimes)
           

7、 红蓝白三色球:有10个球分别为3红、3蓝、4白,球与球之间只有颜色的差别,现需要将这10个球放入3个盒子,要求每个盒子至少有一个白球,其余的球全部随机放,要求输出三个盒子里所有球的颜色,请用程序实现。

import random
# 创建十个球
RedBall = ['红球', '红球', '红球']
BlueBall = ['蓝球', '蓝球', '蓝球']
WhiteBall = ['白球', '白球', '白球', '白球']

# 创建三个盒子
boxes = [[], [], []]
for box in boxes:
    box.append(WhiteBall.pop()) # 将白球放入

print(boxes) # 验证白球放入情况
balls = RedBall + BlueBall + WhiteBall # 将剩下的球合起来

for ball in balls:
    boxNum = random.randint(0, 2) # 随机生成该球要放入盒子的编号
    boxes[boxNum].append(ball) # 放球
print(boxes)
           

8、 输出0-100的质数

num = []
for i in range(2, 101): # 要避开1
    for a in range(2, i//2):
        if (i % a == 0):
            break
    else:
        num.append(i)
print(num)
           

9、 用python输出如下图形

# 3、使用while,完成以下图形的输出。
# (每一行的星星不能用*乘以星星的数量来完成,须使用while嵌套)
#     *
#    ***
#   *****
#  *******
# *********
#  *******
#   *****
#    ***
#     *

row = 1 # 哪一行
num = 1 # 每一行星星的数量
while row <= 9:
    num1 = 1 # 第一步打印空格
    # 下面的判断确定每一行星星的数量
    if row != 1:
        if row < 6:
            num += 2
        else:
            num -= 2
    while num1 <= num:
        if num1 == 1:
            print(' ' * ((9 - num) // 2), end='') # 打印空格
        print('*', end='') # 打印星星
        num1 += 1
    print('') # 换行
    row += 1