Python练习1:循环、字符串、列表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/plychoz/article/details/86320783

Day1

输出九九乘法表

print('九九乘法表')
for i in range(1, 10):       # i表示行
    for j in range(1, i+1):  # j表示列
        if i == j:
            print('%d✖️%d = %-2d\t' % (j, i, j * i))
        else:
            print('%d✖️%d = %-2d\t' % (j, i, j * i), end='')


print('九九乘法表')
for i in range(1, 10):  # i表示行
    for j in range(1, i + 1):  # j表示列
        print('%d✖️%d = %-2d\t' % (j, i, j * i), end='')
    print()

练习1
用while...else...语句编写一个程序,判断输入数字是奇数还是偶数。

data = input('请输入一个数字:')
while True:
    if not data.isdigit():
        data = input('输入有误,请重新输入一个数字:')
    else:
        data = int(data)
        print('输入数字是奇数') if data % 2 == 1 else print('输入数字是偶数')
        break

练习2
1. 百钱买百鸡

  假如你手上有100块钱,你需要买100只鸡。这个时候你去市场上,发现鸡有三种:母鸡3元一只,公鸡1元一只,小鸡0.5元一只,现在请问你有多少种买法可以把钱花完?

思路:根据题目不难想到,母鸡最多可以买33只(i),公鸡最多可以买100只(j),而小鸡最多也只能买100只(k)(因为只需要买100只鸡)。

    只要三个鸡的数量(变量)能满足共100只(之和为100),并且满足花完100元(乘积之和为100),那么这就算是一种方法。令一个变量numb在打印出一种方法后自增+1,那么,最终打印numb的值即为方法的个数。

x+y+z=100
3x+y+0.5z=100
x\y\z是整数
所以,x=x, y=100-5x, z=4x, 且全是整数,x范围0-33

money = 100
children_num = 100
child_female = 3
child_male = 1
child_baby = 0.5
num = 0
for x in range(0,int(children_num/child_female)+1):
    y = children_num - 5*num
    z = 4*num
    if isinstance(y, int) and isinstance(z, int) and y>=0 and z>=0:
        num += 1
        print(x, y ,z)
print('方法数:%d' % num)

练习3


题目描述:
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。
示例1:
输入:hello world
输出:5

my_str = input('请输入一个字符串,单词以空格隔开:')
n = -1
length = 0
#最后一个字符是空格时,特殊处理
while True:
    if my_str[n] == ' ' and length == 0:
        n -= 1
    elif my_str[n] == ' ':
        print('最后一个单词长度:%d' % length)
        break
    else:
        n -= 1
        length +=1

练习4

比较两个列表中的元素,找出不相同的元素并保存在列表3中

list1 = [1,2,3,4,5,2,3]
list2 = [3,4,5,6,7,8,3,1,0]

set1 = set(list1)
set2 = set(list2)

set_u = set1 | set2 #并集
set_i = set1 & set2 #交集
set_d = set_u - set_i #差集

list3 = list(set_d)
print(list3)

练习5

遍历列表 ,并找出索引为奇数的元素

my_list = [1,2,3,4,5,6,7,8,9]
for i in range(1,len(my_list),2):
    print(my_list[i])

Day2

练习1


定义一个函数,输入不定个数的数字,返回所有数字的和。

def func_sum(*args):
    # result = 0
    # for i in args:
    #     result += i
    result = sum(args)
    return result

print(func_sum(1,2,3,4,5))

练习2


编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n 

def reciprocal(x):
    return 1/x

def test(n):
    while not n.isdigit():
        n = input('输入有误,请输入一个数字:')
    n = int(n)
    if n%2 ==0:
        L = range(2,int(n)+1, 2)
    else:
        L = range(1, int(n)+1, 2)
    m = map(reciprocal, L)
    return (sum(m))

num = input("请输入一个数字:")
print(test(num))

练习3


有如下值列表[11, 22, 33, 44, 55, 66, 77, 88, 99, 100.110, 200, 230, 330],

将所有大于66的值保存至字典的第一个key中,将等于小于66的值保存至第二个key中

即:{'k1': 大于66, 'k2': 小于等于66}

value = [11, 22, 33, 44, 55, 66, 77, 88, 99, 100.110, 200, 230, 330]
str1 = ''
str2 = ''
for i in value:
    if i > 66:
        if str1 == '':
            str1 = str(i)
        else:
            str1 = str1 + ', ' + str(i)
    else:
        if str2 == '':
            str2 = str(i)
        else:
            str2 = str2 + ', ' + str(i)

my_dict = {str1: '大于66', str2: '小于等于66'}
print(my_dict)

猜你喜欢

转载自blog.csdn.net/plychoz/article/details/86320783