python 小练习

 

目录

创建一个字典:info

输入三个整数x,y,z,请判断这三个数的大小关系。

依次输入三角形的三边长,判断能否生成一个三角形。

依次输入三角形的三边长,判断能否生成一个等腰三角形。

依次输入三角形的三边长,判断能否生成一个直角三角形。

猜拳游戏

有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量。

打印99乘法表

鸡数

找零钱

小猴吃枣

折纸


python version: 3.6

创建一个字典:info

以“张三”,”李四”作为key,“张三”的value包含(年龄:20,sex:男,爱好:打球),“李四”的value包含(年龄:25,sex:男,爱好:学习)

info = {'张三': {'age': 20, 'sex': 'male', 'hobby': 'ball'}, 
        '李四': {'age': 25, 'sex': 'male', 'hobby': 'study'}}

再添加一条信息key为小红,value为:年龄18,性别女,爱好旅游。

info['小红'] = {'age': 18, 'sex': 'female', 'hobby': 'travelling'}

更改李四的年龄为40。

info['李四']['age'] = 40

  删除张三的信息。

info.pop('张三')

输入三个整数x,y,z,请判断这三个数的大小关系。

i = 1
triangle = []
while i <= 3:
    x = input(f"Please enter {i} integers:")
    try:
        x = int(x)
    except ValueError as e:
        print("Input is not integer, please retry")
        continue
    else:
        triangle.append(x)
        i += 1
print("Three numbers from small to large are:")
for item in sorted(triangle):
    print(item)

依次输入三角形的三边长,判断能否生成一个三角形。

依次输入三角形的三边长,判断能否生成一个等腰三角形。

依次输入三角形的三边长,判断能否生成一个直角三角形。

flag = True
while flag:
    i = 1
    triangle = []

    # input 3 integers by loop
    while i <= 3:
        x = input(f"Please enter {i} integers:")
        # is a integer?
        try:
            x = int(x)
        except ValueError as e:
            print("Input is not integer, please retry")
            continue
        # is a positive?
        if x <= 0:
            print("Please enter a positive number")
            continue
        else:
            triangle.append(x)
            i += 1

    # sorting list
    triangle.sort()

    # a+b>c?
    if (triangle[0] + triangle[1] > triangle[2]) \
            and (triangle[1] + triangle[2] > triangle[0]) \
            and (triangle[2] + triangle[0] > triangle[1]):
        print("The three line can be made up a triangle")
        # a=b? b=c? a=c?
        if triangle[0] == triangle[1] or triangle[1] == triangle[2] or triangle[0] == triangle[2] == triangle[0]:
            print("This is a Isosceles triangle")
        # a*a+b*b=c*c?
        if triangle[0] ** 2 + triangle[1] ** 2 == triangle[2] ** 2:
            print("This is a Right triangle")
    else:
        print("The three line can NOT be made up a triangle")
    print("Please input 'q' to quit or any key to continue")
    
    #quit
    if input() is 'q':
        flag = False

猜拳游戏

用户输入石头、剪刀或布,电脑也会出一个招,要求得出最终结果,显示胜利玩家。

flag = True
while flag:
    mora = {1: 'rock', 2: 'scissors', 3: 'cloth'}
    x = input("Please punch: 1-rock 2-scissors 3-cloth")
    
    # input is an integer?
    try:
        x = int(x)
    except ValueError:
        print("Wrong input, please retry")
        continue
    
    # input is 1, 2 or 3?
        if x not in mora.keys():
        print("Wrong input, please enter 1, 2 or 3")
        continue
    
    # com punch
    y = random.randint(1, 3)
    print(f"You: [{mora[x]}] v.s. [{mora[y]}] :Com")
    
    # compare
    if x == y:
        print("Draw")
    elif (x - y) == -1 or (x - y) == 2:
        print("You Win")
    elif (x - y) == 1 or (x - y) == -2:
        print("You Lost")
    print("Please input 'q' to quit or any key to continue")
    
    # quit
    if input() is 'q':
        flag = False

有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量。

x = [2 ** x for x in range(0, 64)]
weight = 0.00001 * sum(index)
print("Total weight of sesame is %f kg (%0.2f kt)" % (weight, weight / 1000 / 1000))

打印99乘法表

for x in range(1, 10):
    for y in range(1, x + 1):
        if 1 == y:
            print('\n')
        print(f"{x} * {y} = {x*y}\t", end='')

鸡数

公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。

cock = 3
hen = 5
chick = 1 / 3
money = 100
for cock_num in range(1, round(money / cock)):
    for hen_num in range(1, round(money / hen) - cock_num):
        chick_num = 100 - cock_num - hen_num
        if (cock_num * cock + hen_num * hen + chick_num * chick) == money:
            print(f"number of cock is {cock_num}\n"
                  f"number of hen is {hen_num}\n"
                  f"number of chick is {chick_num}\n")

 

找零钱

一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币,写一个算法让售货员用最少的硬币数找给小孩。

# pay
lollipop = 0.37
money = 1

# coin
change1 = Decimal('0.01')
change5 = Decimal('0.05')
change10 = Decimal('0.1')
change25 = Decimal('0.25')
change = Decimal(str(money)) - Decimal(str(lollipop))

# initialize
n1, n5, n10, n25 = 0, 0, 0, 0

# if change < 0.05
if Decimal('0') < change < change5:
    n1 = change / change1
# if change < 0.1
elif change < change10:
    n5 = int(change / change5)
    n1 = int((change - change5 * n5) / change1)
# if change < 0.25
elif change < change25:
    n10 = int(change / change10)
    n5 = int((change - change10 * n10) / change5)
    n1 = int((change - change10 * n10 - change5 * n5) / change1)
# if change < 1
elif change < Decimal('1'):
    n25 = int(change / change25)
    n10 = int((change - change25 * n25) / change10)
    n5 = int((change - change25 * n25 - change10 * n10) / change5)
    n1 = int((change - change25 * n25 - change10 * n10 - change5 * n5) / change1)
print(f"$0.25: {n25}\n$0.1: {n10}\n$0.05: {n5}\n$0.01: {n1}")

小猴吃枣

小猴第一天摘下若干枣子,当即吃掉了一半,不过瘾又多吃了一个;第二天吃了剩下的一半又多吃了一个;每一天都吃了前一天剩下的一半多一个。到第十天小猴再想吃时,见到只剩下一只枣子了。问第一天这堆枣子有多少?

# x is stand for number of jujube on 1st day
x = 1
while True:
    # x is stand for number of jujube on next day
    y=x
    # i is stand for number of days
    for i in range(1, 11):
        y = y / 2 - 1
    print(y)
    if y == 1:
        print(f"There are {x} jujube total")
        break
    x += 1

折纸

一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

thickness = 0.08 / 1000
n = 1
while True:
    height = thickness * 2 ** (n - 1)
    if height >= 8848.13:
        print(f"Need to fold {n} times, and total height is {height} m")
        break
    n += 1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值