Python 13天 题目:29、30、31、32、33、34、35、36、37、38、39、40

29.题目给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

自己想:还是用递归函数 整 结果不太对。

自己想的代码:没有理解题意

参考答案代码:

x = int(raw_input("请输入一个数:\n"))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10
 
if a != 0:
    print "5 位数:",e,d,c,b,a
elif b != 0:
    print "4 位数:",e,d,c,b,
elif c != 0:
    print "3 位数:",e,d,c
elif d != 0:
    print "2 位数:",e,d
else:
    print "1 位数:",e

总结:首先是运算符 的理解  然后 就运用了for循环 注意最后print输出方式print('',a,b...)

30题目一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

自己想:5位数:首先利用// and %将五位数的五个数找出来,然后进行比较。

总结:注意一下input输入进去的是字符串 str 若下面需要继续作运算需要int 若作切片则不需要int

因为int 是没有切片功能的 其没有下标subscriptable

大佬关于切片的解读:[ : : ] 第一位和第二位只是为了确定切片开始和结束的位置,和方向无关,只有第三个参数才是确定从左往右还是从右往左。比如[4:2:-1] 4和2都是正常的索引,表示从左往右第5和第3位置上的元素:以james为例 分别是s 和 m ,有了终点和起点,再看步长是-1:从右往左取,s-e-m 然后尾不取就是s-e, 最后得到的是se 

 正数的索引就是从左往右,负数的索引从右往左:-1是倒数第一个元素,-3是倒数第3个元素。

a = james

a[5:2:-1]和a[4:2:-1]结果一样的 se 索引最多只能取到4,所以这俩结果都是se,都是从s出发

a[4:2:-1]和a[-1:-3:-1]结果是一样的 se


# 切片知识:为第二种方法做铺垫。
a = 'james'
# print(a[:-1])
# print(a[:len(a)-1])
# 利用索引进行切片操作时,可包含三个参数:list[start_index:stop_index:step]
# 起始位置:start_index(空时默认为0);终点位置:stop_index(空时默认为列表长度);步长:step(空时默认为1,不能为0)
"""当 step>0,start_index 的空值下标为 0,stop_index 的空值下标为 length,step 的方向是左到右;
当 step<0,start_index 的空值下标为 length,stop_index 的空值下标为 0,此时反向为右到左了!
也就是说 start_index、 stop_index 空值代表的头和尾,是随着 step 的正负而改变的。"""
# print(a[::1])
# print(a[::-1])
# print(a[5::-1])
# a = 'james'
# print(a[5:2:-1])
# print(a[4:2:-1])
# print(a[3:2:-1])
# print(a[3:1:-1])
# a = '12345'
# print(a[5:2:-1])
# print(a[4:2:-1])
# print(a[3:2:-1])
# print(a[3:1:-1])
# 检验input输入的东西是什么类型
# a = input('请输入:\n')
# print(type(a))

a = input('请输入:\n')
b = a[::-1]

if a == b:
    print('%s 是回文数' % a)
else:
    print('%s 不是回文数' % a)

31题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

自己想:有个简单的问题 周一到周五会写吗 monday tuesday  wednesday thursday friday saturday sunday M-Monday, T-Tuesday、Thursday,  W-Wednesday, S-Saturday、Sunday。

这个题都从来没有见过 感觉难的一匹 感觉得输入好多个

自己写的代码:从来没见过这种东西然后我就战略性放弃了

参考答案:

# 31题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
# 比较直接但冗长的方法
# letter = input('请输入:')
# if letter == 'M':
#     print('Monday')
#
# elif letter == 'T':
#     letter = input('请再一次输入:')
#     if letter == 'u':
#         print('Tuesday')
#     elif letter == 'h':
#         print('Thursday')
#     else:
#         print('data error')
#
# elif letter == 'W':
#     print('Wednesday')
#
# elif letter == 'S':
#     letter = input('请再输入一次:')
#     if letter == 'a':
#         print('Saturday')
#     elif letter == 'u':
#         print('Sunday')
#
# else:
#     print('data error')



# 另外一种方法
letterlist = {'M': 'Monday', 'T': {'u': 'Tuesday', 'h': 'Thursday'}, 'W': 'Wednesday',
              'S': {'a': 'Saturday', 'u': 'Sunday'}}
# print(letterlist['T']['u'])
a = input('请输入:')

# 这个能看懂 但是自己写还是想不到
if a in ['T', 'W']:
    b = input('请再输入:')
    print(letterlist[a][b])
else:
    print(letterlist[a])

总结:多个条件情况下 在if条件下可以 再次输入input 

多看看代码 多思考 一下 

编程技巧上: 也没有想到可以这么玩 if在判断完第一个语句后,可以继续加if判断 也可以重新加入input加入新的变量进来 。还有就是字典中调用的玩法。

逻辑上:这个倒是知道,

32题目:按相反的顺序输出列表的值。

前几个题关于[] 列表将得明明白白 自己看吧

# 32题目:按相反的顺序输出列表的值。
list = ['a', 'b', 'c', 'd']
# list.reverse()
for i in list[::-1]:
    print(i)

# print(list[::-1])
# print(list)

33.题目:按逗号分隔列表。

自己想:根本就没有见过 这些东西

# 33.题目:按逗号分隔列表。
"""Python jion()方法用于将序列中的元素按指定的元素连接成一个新的字符串 str.join(sqence)
 返回通过指定字符连接序列中元素后生成的新字符串"""
# join()例子
# s1 = '-'
# sqence = ['a', 'b', 'x']
#
# s2 = s1.join(sqence)
# print(s2)

# 33.题目:按逗号分隔列表。
# str = ','
# list = ['james', 'kebi', 'jordan']
#
# print(str.join(list))

L = [1, 2, 3, 4, 5, 6]
new_L = ','.join(str(i) for i in L)
print(new_L)

# Python repr()函数 - 内置函数一种
"""repr()函数将对象转化为供解释器读取的形式。
语法:repr(object) 参数:object-对象 返回值:返回一个对象的string形式  """

# s = 'runoob'
# repr(s)
# print(s)
# print(new_s)
#
# list = ['Messi', 'Ronaldo', '10', '7']
# new_list = repr(list)
# print(list)
# print(new_list)
#
# dict = {'Lakers': 'James', 'Clippers': 'Leonard'}
# new_dict = repr(dict)
# print(dict)
# print(new_dict)

# L = [1, 2, 3, 4, 5]
# L = repr(L)[1:-1]
# print(L)

34.题目:联系函数调用 (使用函数 ,输出三次MVP 字符串)

自己想 :介绍一下 if __name__ == '__main__':

大佬解释:编程语言有不同的特性和风格,Python这类语言是脚本语言,特点是比较自由,当写下一行代码,只要不是定义类或者函数,那么大部分情况下都会执行。类似的语言还有JavaScript

而一些语言是比较严肃的,比如C++和Java,这样的语言必须要把执行的语言写在一个函数里面,程序只会执行函数里面的东西,而main函数之外是不允许写在可执行的代码的。因此main函数相当于程序的入口和全部执行的内容。

有的人喜欢写main方法,是因为这样比较明确,可以把定义和真正执行的部分分隔开,但这样只是个人编程分格的偏好,没有好坏之分。

# 题目:练习函数调用。
def str_print():
    print('MVP')

def restr_print(n):
    for i in range(n):
        str_print()

restr_print(3)

35.题目:文本颜色设置

自己想 : 这个确实没有见过

# 35题目:文本颜色设置。
class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[91m'
    UNDERLINE = '\033[4m'
print(bcolors.WARNING + "MVP" + bcolors.ENDC)
print(bcolors.BOLD + "MVP" + bcolors.ENDC)

36题目:求100之内的素数。

自己想:想个屁 又是晕了 但是又重新学到了for循环

大佬:for-else 这个是Python的特征,其他语言没有。

参考代码:

num_little = int(input('please input a larger number '))
num_upper = int(input('please input a smaller number '))

for num in range(num_little, num_upper+1):
    if num > 1:
        for i in range(2, num):
            if num%i == 0:
                break
        else:
            print(num)
37题目:对10个数进行排序。

参考代码:

a = []
for i in range(5):
    a.append(int(input('Please enter a number: ')))
a.sort()
print(a)

总结:没有见过 sort() 这个函数

38题目:求一个3*3矩阵主对角线元素之和。

自己想:想不出来

参考代码:

# 38 题目:求一个3*3矩阵主对角线元素之和。
a = []
sum = 0
for i in range(3):
    a.append([]) #相当于在空列表中增加[],想象成在空列表中增加数这样形象。目的是创造二维矩
    for j in range(3): # 在第i行循环3次 即增加3列。
        a[i].append(int(input('Please a number: '))) # a[i]代表第i行

for i in range(3):
    sum += a[i][i]

print(a)
print(b)

总结:逻辑上:没有想到 参考答案利用双重for循环控制输入二维数组,再将a[i][i] 累加后输出。      编程技巧上:利用for循环 可以生成一个二维数组 矩阵就是一个二维数组。编程技巧上欠缺外加逻辑上欠缺。

39.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

自己想:逻辑上想得出来 但是编程技巧确实不行

总结:冗长的方法逻辑确实不清晰 简单的方法编程技巧没有达到

# 39.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
"""比较简单的一种方法 利用sort"""
# arr = [1, 4, 5, 7, 9]
# num = int(input("请输入:"))
# arr.append(num)
# arr.sort()
# print(arr)

"""第二种方法 比较冗长的代码 建议自己写个列表 对应列表和要输入的数 进行代码构建"""
arr1 = [1, 3, 4, 56, 66, 0]
n = len(arr1)
num1 = int(input("请输入:"))
for i in range(n):
    if arr1[i] > num1:
        temp1 = arr1[i]
        arr1[i] = num1
        for j in range(i, n):
            temp2 = arr1[j]
            arr1[j] = temp1
            temp1 = temp2
    else:
        arr1[5] = num1
for k in range(n):
    print('%s' % arr1[k], end=' ')
    # else:
    #     arr1.append(num1)
    #     for l in range(n):
    #         print('%s'% arr1[l], end=' ')






40题:

"""40题目:将一个数组逆序输出"""
"""第一种方法"""
# a = [1, 5, 78, 200, 35]
# a.sort()
# a = a[::-1]
# print(a)

"""第二种方法"""
b = [2, 3, 78, 98, 109, 120]
b.sort()
b.reverse()
print(b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值