07_Python语法示例(基础语法,文件操作,异常处理)

1.写程序在终端输出图形

########
#      #
#      #
########
print("#" * 8)
print("#" + " " * 6 + "#")
print("#" + " " * 6 + "#")
print("#" * 8)

2.已知矩形的长边为6cm,短边为4cm,求矩形的周长和面向并打印在终端上

width = 6
hight = 4
perimeter = (width + hight) * 2
area = width * hight
print("矩形的周长是%s, 面积是%s" % (perimeter, area))

3.已知连个变量a=1000,b=2000,让a和b交换绑定的对象

方法一:
    a = 1000
    b = 2000
    c = a
    a = b
    b = c
    print(a, b)
方法二:
    a = 1000
    b = 2000
    a = a + b
    b = a - b
    a = a - b
    print(a, b)
方法三:
    a = 1000
    b = 2000
    a, b = b, a  # 序列赋值(解构/解包),python独有的方法
    print(a, b)

4.打印出以下小星星

'''规律: 1 3 5 7 每一行小星星个数=x*2-1
       *
      ***
     *****
    *******
'''
方法一:
    x = 1
    while x <= 4:
        res = "*" * (x * 2 - 1)
        print(res.center(7))  # center字符居中,两边自动填充字符
        x += 1
方法二:
    for x in range(1, 5):
        res = "*" * (x * 2 - 1)
        print(res.center(7))

5.中国古代的秤是16两一斤,那么216两是几斤几两,写程序打印出结果

i = 216 // 16
j = 216 % 16
print("古代的216两是%d斤%d两" % (i, j))

6.从凌晨0:0:0计时,到现在已经过去了63320秒,现在是几时几分几秒,写程序打印出来

t = 63320 // 3600
m = 63320 % 3600 // 60
s = 63320 % 3600 % 60
print("%d:%d:%d" % (t, m, s))

7.将数字3.14用变量pi绑定,转换为整数用变量i绑定,将pi与i相减的结果用变量f绑定

pi = 3.14
i = int(pi)
f = pi - i
print(f == 0.14)  # False
del pi, i, f  # 删除变量
help("__main__")  # 查看当前作用域内变量

8.假设一年只有365天,输入年数,打印这年有多少周,分三次输入时分秒,打印距离0:0:0过了多少秒

year = input("请输入年份:")
print("%s有%s周" % (year, 365 // 7))
time_t = int(input(""))
time_m = int(input(""))
time_s = int(input(""))
print("距离0:0:0过了%s秒" % (time_t * 3600 + time_m * 60 + time_s))

9.输入一个正整数,判断这个数是奇数还是偶数并打印结果

i = int(input("请输入一个正整数:"))
if i%2 == 0:
    print("%s是偶数" % i)
else:
    print("%s是奇数" % i)

10.输入一个季度1-4,输出这个季度有那几个月,输入不是1-4的整数则提示输入有误

quarter = int(input("季度(1~4): ") or "0")
if quarter == 1:
    print("1月, 2月, 3月")
elif quarter == 2:
    print("4月, 5月, 6月")
elif quarter == 3:
    print("7月, 8月, 9月")
elif quarter == 4:
    print("10月, 11月, 12月")
else:
    print("输入有误!")

11.输入一年中的月份1-12,输出这个月在那个季度,如果输入的是其他数则提示输入有误

mouth = int(input("请输入月份(1~12): ") or "0")
if mouth in [1, 2, 3]:
    print("%s月是春季" % mouth)
elif mouth in [4, 5, 6]:
    print("%s月是夏季" % mouth)
elif mouth in [7, 8, 9]:
    print("%s月是秋季" % mouth)
elif mouth in [10, 11, 12]:
    print("%s月是冬季" % mouth)
else:
    print("输入有误!")

12.输入一个数用if语句计算打印这个数的绝对值,再用条件表达式实现计算并打印绝对值

i = int(input("输入一个数字: "))
if i >= 0:
    print(i)
else:
    print(-i)
print(i if i >= 0 else -i)

13.出租车计价器程序,3公里以内收费13元,超过3公里每公里2.3元,超过15公里每公里1.15元,输入公里数打印出费用金额,保留2位小数

kilometer = int(input("请输入公里数: "))
if kilometer <= 3:
    money = 13
elif 3 < kilometer <= 15:
    money += (kilometer - 3) * 2.3
elif kilometer > 15:
    money += (kilometer - 15) * 1.15
else:
    print("输入有误!")
print("费用为%.2f" % money)

14.输入一个学生的三科成绩打印出最高分和最低分

a = int(input("请输入成绩a: "))
b = int(input("请输入成绩b: "))
c = int(input("请输入成绩c: "))
if a > b:
    a, b = b, a
if b > c:
    b, c = c, b
if a > b:
    a, b = b, a
print("最高分为%s, 最低分为%s" % (c, a))

15.每4年一润年,每百年不润,四百年又润,输入一个年分判断是否为润年

方法一:
    year = int(input("请输入年份: "))
    if year % 4 == 0 and year % 100 != 0:
        print("%s年是闰年" % year)
    elif year % 400 == 0:
        print("%s年是闰年" % year)
    else:
        print("%s年不是闰年" % year)
方法二:
    year = int(input("请输入年份: "))
    # if条件表达式实现: 成立执行 if 真值表达式 else 不成立执行
    print("闰年" if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0) else "不是闰年")

16.BMI身体质量指数程序设计

'''
    BIM = 体重(公斤)/身高的平方(米)
    体重过轻: BIM < 18.5
    正常范围: 18.5 <= BIM <= 24
    体重过重: BIM > 24
'''
height = int(input("身高: ")) / 100
weight = int(input("体重: "))
bim = weight / (height ** 2)
# if条件表达式嵌套实现: 成立执行 if 真值表达式 else '成立执行 if 真值表达式 else 不成立执行'
print("体重过轻" if bim < 18.5 else "体重过重" if bim > 24 else "正常范围")

17.写一个程序打印一个高度为4行的矩形方框,输入一个整数数字代表矩形宽度

'''
    输入10时打印如下,输入5时打印如下
    ##########      #####
    #        #      #   #
    #        #      #   #
    ##########      #####
'''
方法一:
    width = int(input("请输入矩形宽度: "))
    for i in range(1, 5):
        display = '#' * width if i == 1 or i == 4 else '#' + ' ' * (width - 2) + '#'
        print(display)
方法二:
    width = int(input("请输入矩形宽度: "))
    t = '%' + str(width - 1) + 's'
    for i in range(1, 5):
        # 替换原理: print("#%4s" % "*")
        display = '#' * width if i == 1 or i == 4 else '#' + t % '#'
        print(display)

18.输入一个字符串,打印这个字符串的第一个和最后一个字符,字符串长度为偶数打印'|',奇数则打印中间字符

s1 = input("请输入一个字符串: ")
print("第一个字符是%s,最后一个字符是%s" % (s1[0], s1[-1]))
print("|" if len(s1) % 2 == 0 else s1[len(s1) // 2])

19.输入任意一个字符串,判断这个字符串是否是回文,回文示例:上海自来水来自海上,山东落花生花落东山

s1 = input("请输入一个字符串: ")
print("是回文" if s1 == s1[::-1] else "不是回文")

20.输入一段字符串,如果是字符串则打印第一个字符的Unicode值,如果是整数0~65535范围则打印这个值是对应的字符

s1 = input("请输入字符串或正整数: ")
print(ord(s1[0]) if s1.isalpha() is True else chr(int(s1)))

21.输入下列三行文字让这三行文字再下面方框内居中显示

'''
    请输入第一行: hello world!
    请输入第二行: my name is Coco.
    请输入第三行: today is Sunday!
    显示如下:
    +----------------------+
    |     hello world!     |
    |   my name is Coco.   |
    |   today is Sunday!   |
    +----------------------+
'''
line = 3
temp_list = list(input("请输入字符串%d: " % (i + 1)) for i in range(line))
for i in range(temp_list.count('')):
    # 循环查找列表中的空字符串后删除空字符串
    temp_list.remove('')
# max()函数可以输入多个参数,最终返回最大的一个
length = max(len(i) for i in temp_list)
for i in range(len(temp_list) + 2):
    print('+' + '-' * length + '+') if i == 0 or i == len(temp_list) + 1 else \
        print('|' + temp_list[i - 1].center(length) + '|')

22.输入一个字符串判断有几分字符e,有几个空格,是否以?结尾

s1 = input("请输入字符串: ")
print("%s个字符e" % s1.count('e'))
print("%s个空格" % s1.count(' '))
print("字符串以?结尾: %s" % s1.endswith('?'))

23.依次输入下列三行文字,让三行文字按最长个字符的宽度右对齐输出

'''
    请输入第1行: hello world!
    请输入第2行: my name is Coco.
    请输入第3行: today is Sunday!
    打印结果如下
        hello world!
    my name is Coco.
    today is Sunday!
'''
line = 3
temp_list = list(input("请输入第%d行: " % (i + 1)) for i in range(line))
for i in range(temp_list.count('')):
    temp_list.remove('')
length = max(len(i) for i in temp_list)
temp_str = "%" + str(length) + "s"
for i in range(len(temp_list)):
    print(temp_str % temp_list[i])

24.写程序输入一个整数n,打印n以内不含n的全部不大于0的偶数

方法一:
    i = 1
    j = int(input("请输入一个整数: "))
    while i < j:
        if i % 2 == 0:
            print(i)
        i += 1
方法二:
    for i in range(2, int(input("请输入一个整数: "))):
        if i % 2 == 0:
            print(i)

25.打印1~20的整数,要求打印在一行显示且数字与数字之间用一个空格分隔

for i in range(1, 21):
    print(i, end=' ')

26.打印1~20点整数,每行5个数,打印四行

for i in range(1, 21):
    if i in [6, 11, 16]:
        print()
    print("%d\t" % i, end=" ")

27.打印从零开始的浮点数,每个数增加0.5,打印出10以内所有的这样数

i = 0.5
while  i < 10:
    print(i, end=' ')
    i += 0.5

28.使用while语句打印10~1之间的整数

i = 10
while i > 0:
    print(i, end=' ')
    i -= 1

29.用while语句实现打印三角形,输入一个整数表示三角形的宽度和高度

'''请输入三角形宽度: 4
    *
    **
    ***
    ****
'''
width = int(input("请输入三角形宽度: "))
i = 1
while i <= width:
    j = 1
    while j <= i:
        print("*", end='')
        j += 1
    print()
    i += 1

30.输入一个数,打印指定宽度的正方形

'''请输入正方形宽度: 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
    1 2 3 4 5
'''
width = int(input("请输入正方形宽度: "))
for i in range(width):
    for j in range(1, width + 1):
        print(j, end=' ')
    print()

31.用while语句实现打印三角形,输入一个整数表示三角形的宽度和高度

'''
    *           *   ****    ****
    **         **   ***      ***
    ***       ***   **        **
    ****     ****   *          *
'''
width = int(input("请输入三角形的宽度: "))
i = 1
while i <= width:
    print("*" * i)
    i += 1

width = int(input("请输入三角形的宽度: "))
i = 1
while i <= width:
    print(" " * (width - i) + "*" * i)
    i += 1

width = int(input("请输入三角形的宽度: "))
i = width
while i >= 0:
    print("*" * i)
    i -= 1

width = int(input("请输入三角形的宽度: "))
i = width
while i >= 0:
    print(" " * (width - i) + "*" * i)
    i -= 1

32.输入一个开始值8,输入一个结束值30,按每5个整数打印一行

begin = int(input("请输入开始值: "))
end = int(input("请输入结束值: "))
count = 0
while begin < end:
    print("%s\t" % begin, end=' ')
    count += 1
    if count % 5 == 0:
        print()
    begin += 1

33.用while循环生成字符串'AaBbCcDdEe...XxYyZz'并打印

i = ord('A')
while i <= ord('Z'):
    print(chr(i) + chr(i + 32), end= '')
    i += 1

34.分别用while和for实现打印输入的字符串中有多少个空格

s = input("请输入字符串: ")
count = 0
i = 0
while i < len(s):
    if s[i] == ' ':
        count += 1
    i += 1
else:
    print(count)

s = input("请输入字符串: ")
count = 0
for i in s:
    if i == ' ':
        count += 1
print(count)

35.输入一个n,范围在10以内代表矩形的宽度,用for循环实现如下打印结果

'''请输入一个10以内的整数: 5
    1 2 3 4 5
    2 3 4 5 6
    3 4 5 6 7
    4 5 6 7 8
    5 6 7 8 9
'''
num = int(input('请输入一个10以内的整数: '))
for i in range(1, num + 1):
    for j in range(i, num + i):
        print(j, end=' ')
    print()

36.写一个程序求1~100之间所有不能被5,7,11整除的数的和

count = 0
for i in range(1, 101):
    for j in [5, 7, 11]:
        if i % j == 0:
            break
    else:
        count += i
print(count)

37.输入一个Unicode开始值和结束值,生成其间的字符串并打印

begin = int(input("begin: "))
end = int(input("end: "))
temp_list = list(chr(i) for i in range(begin, end + 1))
for i in temp_list:
    print(i, end=" ")

38.输入一个整数代表树干的高度,输入3时打印如下

'''
    *
   ***
  *****
    *
    *
    *
'''
height = int(input("请输入树干的高度: "))
for i in range(1, height + 1):
    print("%s" % ("*" * (i * 2 - 1)).center(2 * height - 1))
for i in range(height):
    print("*".center(2 * height - 1))

39.输入一个正整数,打印从0到这个数的素数(prime),素数也叫质数,是只能被1和自身整数的整数

num = int(input("正整数: ") or "0")
if num >= 2:
    print(2, end= ' ')
for i in range(2, num + 1):
    for j in range(2, i):
        if i % j == 0:
            break
        else:
            if i - j == 1:
                print(i, end= ' ')

40.写一个程序,让用户输入很多个正整数,当输入小于零的数时结束输入

'''
    1)输出这些数的和
    2)输出这些数的最大的数和第二大的数
    3)删除最小的一个数
    4)按原来输入的顺序打印出乘余的这些数
'''
temp_list = list()
while True:
    num = int(input("小于0退出: ") or "-1")
    if num < 0:
        break
    else:
        temp_list.append(num)
print("求和: %d最大数: %d" % (sum(temp_list), max(temp_list)))
temp_list.remove(max(temp_list))
print("第二大数: %d" % max(temp_list))
temp_list.remove(min(temp_list))
for i in temp_list:
    print(i)

41.求100以内有哪儿些整数与自身+1的乘积再对11求余的结果等于8

temp_list = [x for x in range(100) if (x + 1) * x % 11 == 8]
print(temp_list)

42.计算20个斐波那契数(fabonacci数)存于列表中并打印,斐波那契数: 从第三个数起后一个数是前两个数之和

temp_list = [1, 1]
a = 1
b = 1
for i in range(18):
    a, b = b, a + b
    temp_list.append(b)
print(temp_list, sum(temp_list))

43.算出100~999以内的水仙花数,水仙花数是指百位的3次方加上十位的3次方加上个位的3次方等于原数的数字

nums = ([x for x in range(100, 1000)
    if int(str(x)[0])**3 + int(str(x)[1])**3 + int(str(x)[2])**3 == x])
print(nums)

44.任意输入一些大于零数,存于列表中L,当输入-1时结束输入

'''
    L = [1, 3, 5, 3, 7, 9, 3, 7, 6, 5]
    1)打印出这些数
    2)打印这些数的和
    3)去掉列表L中重复第二次或之后出现的数再次存到另一个列表L2中,L2 = [1, 3, 5, 7, 9, 6]
    4)打印L2列表中的数据的和
    5)将L列表中出现两次的数存到另一个列表L3中L3 = [5, 7]
'''
L = list()
while True:
    num = int(input("请输入大于0的整数: ") or "0")
    if num == 0:
        continue
    if num == -1:
        break
    L.append(num)
for i in L:
    print(i, end= ' ')

count = 0
for i in L:
    count += i
print("求和: ", count, sep= ':')

L2 = list()
for i in L:
    if i not in L2:
        L2.append(i)
for i in L2:
    print(i, end= ' ')
print("L2求和: %s" % sum(L2))

L3 = list()
for i in L:
    if L.count(i) == 2 and i not in L3:
        L3.append(i)
print(L3)

45.任意输入字符串,打印这个字符串是否代表星期几,如果不是以上字符则打印"字典内没有相应的数据"

data = {
    '0': '星期天',
    '1': '星期一',
    '2': '星期二',
    '3':  '星期三',
    '4': '星期四',
    '5': '星期五',
    '6': '星期六'
}
while True:
    num = input("请输入0-6查询: ") or "-1"
    if num in data:
        print(data[num])
    else:
        print("字典内没有相应的数据")

46.有列表L=['coco', 'angels', 'cat', 'mouse']用推导式生成字典,字典的值为键的长度

L = ['coco', 'angels', 'cat', 'mouse']
dic = {x:len(x) for x in L}
print(dic)

47.有列表L1 = [1001, 1002, 1003, 1004],L2 = ['Coco', 'Angels', 'Cat', 'Mouse'],用L1做键L2做值生成字典

L1 = [1001, 1002, 1003, 1004]
L2 = ['Coco', 'Angels', 'Cat', 'Mouse']
dic = {L1[x]:L2[x] for x in range(4)}
print(dic)

48.输入一段字符串,打印所有输入过的字符串,但重复的只打印一次

se = {x for x in input("请输入字符串: ")}
print(se)

49.输入一段字符串,打印出这个字符串中出现过的字符及出现过的次数,字典存储

s = input("请输入字符串: ") or "-1"
dic = dict()
for i in s:
    dic[i] = s.count(i)
print(dic)

50.一只小猴子摘了很多桃,第一天吃了全部桃子的一半又多吃了一个,到第十天只剩下一个请问第一天多少个桃

# 规律1 4 10 (n+1)*2
num = 1
for i in range(9):
    num = (num + 1) * 2
print(num)

51.求4~5个完全数,并打印,1+2+3=6(6为完全数),1,2,3都为6的因数(能被一个数x整除的数为y,则y为x的因数)

num = 0
for i in range(1, 10000):
    for j in range(1, i):
        if i % j == 0:
            num += j
    if num == i:
        print(i, end=' ')
    num = 0

52.任意输入一个数n代表三角形的高度,如输入4打印一下菱形

'''
       1
      121
     12321
    1234321
     12321
      121
       1
'''
height = int(input("请输入高度: ") or '输入有误')
temp_str = str()
# 打印菱形上部分(行数字符数增长部分)
for i in range(1, height + 1):
    for j in range(1, i):
        temp_str += str(j)
    for x in range(i, 0, -1):
        temp_str += str(x)
    print(temp_str.center(height * 2 - 1))
    temp_str = ''
# 打印菱形下部分(行数字符数减少部分)
for i in range(height - 1, 0, -1):
    for j in range(1, i):
        temp_str += str(j)
    for x in range(i, 0, -1):
        temp_str += str(x)
    print(temp_str.center(height * 2 -1))
    temp_str = ''

53.用for和while分别实现打印九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print("%d*%d=%d" % (i, j, i*j), end= '\t')
    print()
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print("%d*%d=%d" % (i, j, i*j), end= '\t')
        j += 1
    print()
    i += 1

54.有文件t1.txt里面的内容如下

'''t1.txt
    1,coco,22,13550505050,IT
    2,Rubicon,23,13304320533,Tearcher
    3,master,18,1333235322,IT
    利用文件操作,将其构造成如下数据类型
    [{'id': '1','name': 'coco','age': '22','phone': '13550505050', 'job': 'IT'},......]
'''
result = []
with open("t1.txt", encoding="UTF-8") as f:
    # 读取每一行数据
    for line in f:
        dic = {}
        lst = line.split(",")
        dic["id"] = lst[0].strip()
        dic['name'] = lst[1].strip()
        dic['age'] = lst[2].strip()
        dic['phone'] = lst[3].strip()
        dic['job'] = lst[4].strip()
        result.append(dic)
print(result)
posted @ 2019-07-20 00:05  唐雪成  阅读(512)  评论(0编辑  收藏  举报