Python基础

 此篇博客为自己开始学Python语言一边学习一边记录自己所学的程序所创(一边学习一边更新)

所有程序皆为使用Pycharm的Python3.0的程序

Hello Wrold小程序

print('Hello wrold!')

数字游戏

import random
print('猜猜我现在心里想的数字是那个?')
result = random.randint(0, 20)
while True:
    # 下面两个语句用于显示自己产生的随机数
    # print('生成的数字是')
    # print(result)
    a = int(input('请输入你猜的数字:\n'))
    if a == result:
        print('你猜对了')
        print('但是没有奖励哦')
        break
    else:
        print('你猜错了哈哈哈')

基本的数学运算符

# 基本的数学运算符程序
print('9 + 3\t\t= ',9+3)
print('9 - 3\t\t= ',9-3)
print('9 * 3\t\t= ',9*3)
print('9 // 4\t\t = ',9//4)  # 真除法
print('9 / 4\t\t = ',9/4)    # 取整除法
print('9 % 3\t\t= ',9%3)
print('9 ** 3\t\t= ',9**3)
print('(2+3) * 2 \t\t= ',(2+3)*2)
# 字符串的乘法
print('\'-\' * 10\t= ','*'*10)

小数的格式

from fractions import Fraction
# 格式如下
# 前一位数是分子,后一位书是分母
y = Fraction(2,4)
# 自动约分
print("2/4 =",y)

基本输入格式 

input('Please enter an integer:')
print('Please enter an other integer')
integer1 = int(input('integer1 = '))
print('The integer of that you entered is ',integer1)
str1 = input('Please enter an str\nstr1 = ')
print('The string of you entered is ','\'',str1,'\'')
float1 = float(input('Please enter a floating-point number: '))
print('The floating-point number you entered is ',float1)

买苹果程序

# 先输入字符串变量
price_str = input('Please enter the price of Apple/kg:')
weight_str = input('Please enter the weight of Apple/kg:')
# 将字符串转换为浮点数类型
price = float(price_str)
weight = float(weight_str)
money = price * weight
# 格式化输出
print('Apple %.1f per kilogram and you want to buy %.1f kilograms apple, you need to pay for %.1f RMB.'%(price, weight, money))

格式化

# string's format
name = 'Xiaoming'
print('Name is %s'%name)
# floatint-point number's format
float1 = float(input('请输入一个数字:'))
print('The number of you entered is %02.1f' % float1)
# Percent's format
scale = 0.25
print('%.2f%%' % scale * 100)

导入包(import体验)

import keyword
print(keyword.kwlist)

猜拳游戏(选择结构)

import random
# 石头 1 剪刀 2 布 3
print('这是一个猜拳游戏,石头(1) 剪刀(2) 布(3)')
player = int(input('请输入你要出的拳:\t '))
computer = random.randint(1,3)
print('电脑出的拳是:\t\t',computer)
# 比较胜负
if player == computer:
     print('双方平局')
elif (computer-player == 1 or (computer == 3 and player == 1)):
    print('玩家胜利')
else:
    print('电脑胜利')

循环结构:

while

i = 0
while i < 5:
    print('Hello Python')
    i=i+1

死循环

i = 0
while i < 5:
    print('Hello Python')
    # i=i+1

0 - 100求和

i = 0
Sum = 0
while i <= 100:
    Sum += i
    i = i+1
print('The sum from 0 to 100 is',Sum)

0-100偶数求和(if 和 while的嵌套)

# 偶数求和
i = 0
Sum = 0
while i <= 100:
    if i%2==0:
        Sum += i
    i = i+1
print('The sum of even number from 0 to 100 is',Sum)

两种方式实现打印小星星(循环嵌套初体验)

# 打印小星星

# 利用循环嵌套实现
# rows = 1
# while rows <= 4:
#     num = 0
#     while num < rows:
#         # 输出一行不会换行
#         print('*',end='')
#         num += 1
#     # 此处再实现换行操作
#     print('')
#     rows += 1

# 利用字符串的乘法实现
rows = 0
while rows < 5:
    print('*'*(rows+1))
    rows += 1

循环嵌套实现99乘法表

# 利用循环嵌套实现99乘法表
rows = 1
cols = 1
while rows <= 9:
    cols = 1
    while cols <= rows:
        # 不换行,普通方法
        # print(cols,end=' * ')
        # print(rows,end=' = ')
        # print(rows*cols,end='\t')
        # 格式化的方法
        print('%d * %d = %d\t'%(cols,rows,cols*rows),end='')
        cols += 1
    print('')
    rows += 1

使用range自带函数实现99乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print("%sx%s=%s" % (j,i,j*i),end="\t")
    print()

小小程序(纯属自娱自乐)

print("你想对誰说一句话,请留下Ta的名字:")
a=input()
print(a)
print("接下来请输入你想说的一句话:")
b=input()
print("你想说的话是"+b)
print("那么接下来就是见证奇迹的时刻了")
print(a+"你知道吗,有一句话藏在我心里很久了,今天我必须要说给你听,那就是"+b+"\n")

函数的嵌套调用

# The first function
def text1():
    print('Hello World1!')
    print('Hello World2!')

# The second function
def text2():
    text1()
    print('Hello World3!')

# Nested Function
text2()

List

name_list=["张三","李四"]
print(name_list)
for s in name_list:
    print(s)
print(name_list[1])
# list.sort()   # 升序排序
# list.sort(reverse=True)  # 降序排序
# list.clear()  # 清除数据
# list.pop(x)   # 弹出第x个元素,无参数则默认最后一个元素弹出
# list.count(数据)  # 返回数据出现的次数
# list.index(数据)    # 获取数据第一次出现的索引(即下标)
# list.remove(数据)   # 删除第一个出现的指定数据
# list.append(数据)  # 末尾追加
# list.insert(self,index,object)  # index后面插入一个对象
# list.extend(self,iterable)  # 在当前列表的末尾插入一个新的列表
# del list[index]  # 从内存中删除数据
# list.reverse()  # 列表的翻转(逆序)

元组 (tuple)

info_tuple=('许嵩',18,1.80)
# print(type(info_tuple))
print(info_tuple[0])
# The init of empty tuple
empty_tuple=()
#  single tuple
single_tuple=(5)
print(type(single_tuple))
# 以上类型为 int类型

# # single tuple
# # plus ','
# single_tuple=(5,)
# print(type(single_tuple))
# # The above type is tuple

# methods
# be like to list
# tuple.count()
# tuple.index()

格式化输出元组

name=('许嵩',18,1.80)
print('%s,aged %d, %.2f high' %name)
# List to tuple and Tuple to list
# tuple(list)
# list(tuple)

字典的学习

# 字典中的键集合
# dictionary.keys()
# 值集合
# dictionary.values()
# 所有键值元组列表
# Items()

# Key:Value(key must be only)
# 键值对之间用 , 分隔
# 列表是有序的对象集合
# 字典是无序的对象集合

xiaoming = {
    'name':'小明',
    'age':'18',
    #'gender':True,
    'height':'1.75',
    'weight':'50'
}

# 1.统计键值对的数目
print(len(xiaoming))

# 2.合并字典
temp_dic={
    '爱好':"睡觉",
    '喜欢':'玩'
          }
# 如果有同样的键,那么会覆盖原来字典里面的键的值
xiaoming.update(temp_dic)

# 3.clear()清空所有的键值对
# xiaoming.clear()

# 4.for 遍历输出
# k为键
for k in xiaoming:
    print('%s-%s\n'%(k,xiaoming[k]))

# # 1.取值
# print(xiaoming['age'])

# # 2.增加/修改
# xiaoming['age'] = 19

# # 3.删除
# xiaoming.pop('age')

print(xiaoming)

字典和列表的串用

# 使用键值对,存储描述一个物体的相关信息
# 将 多个字典 放在一个列表里面,再进行遍历
card_list=[
    {'name':'I love Vae',
     'qq':'10128513777',
     'phone':'123123123'
     },
    {'name':'lisi',
     'qq':'26731595557',
     'phone':'12343556787'
     }
]
for k in card_list:
    print(k)

字符串

str1 = "Hello Python"

str2 = 'My favourite singer is "Vae"'

length = str1.__len__()

print(length)

print(str1)

print(str2)

for char in str2:
    print(char)
# methods
# len(str)      calculate length of str
# count(data)   calculate the times of the data

# if use index if the Substring isn't exist,there will be error
# index(data) return index of the data

str_boy="Gou yi Zhou"
length_girl=str_boy.__len__()

for s in str_boy:
    print(s)

判断数字的方法

# Jude space
str_space = "     \t\n\r"

print(str_space)

# Jude digit
# But can't use in float-point number
# str_num = "1"
str_num = "\u00b2"
print(str_num)

print(str_num.isdecimal())  # 纯数字
print(str_num.isdigit())    # 数字加Unicode编码
print(str_num.isnumeric())  # 数字加Unicode加中文数字

字符串的方法

str_1 = "Hello world!"

# 1.string.startswith(str)  check the string's start
print(str_1.startswith("He"))

# 2.string.endswith(str)  check the string's end
print(str_1.endswith("ld!"))

# 3.string.find("str")  find "str" in string
# if "str" not here this function will return -1
# return str's index
print(str_1.find("llo"))

print(str_1.find("abd"))

# 4.replace string
# return another string but can't change the old string
print(str_1.replace("world","python"))
print(str_1)

文本的格式化输出

# Example:The lecture from internet
# Demand :Order output and center the output of the following
poem = ["登鹳雀楼",
        "王之涣",
        "白日依山尽",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"
        ]
for poem_str in poem:
    print("|%s|" % poem_str.center(10))

for poem_str in poem:
    print("|%s|" % poem_str.ljust(10))

for poem_str in poem:
    print("|%s|" % poem_str.rjust(10))

 去除空白字符

# str_1 = "\t\nHello \t\n\tWorld!"
# Example:The lecture from internet
# Demand :Order output and center the output of the following
poem = ["\t\t\n\n登鹳雀楼\t\t",
        "王之涣\n\n",
        "白日依山尽",
        "黄河入海流",
        "欲穷千里目",
        "更上一层楼"
        ]
for poem_str in poem:
    print("|%s|" % poem_str.strip.center(10))

for poem_str in poem:
    print("|%s|" % poem_str.ljust(10))

for poem_str in poem:
    print("|%s|" % poem_str.rjust(10))


 字符串的拆分和拼接

poem = "登鹳雀楼\t 王之涣\t 白日依山尽\t 黄河入海流\t 欲穷千里目\n\t更上一层楼\n\t"

# 1.去掉所有空白字符
# 2.将字符串连接为一个大的字符串

print(poem)

# 1.拆分字符串
# 大字符串拆分为多个列表
poem_list=poem.split()
print(poem_list)
 
# 2.拼接
result = " ".join(poem_list)  # 接受列表返回以恶搞字符串
print(result)

字符串的切片

# 字符串[开始索引:结束索引:步长]  # 用于间隔切片
# 顺序和倒叙索引从右到左是 -1
# 想要获取最后的字符 则结束索引为0
num_str = "0123456789"

print("截取2-6索引的字符串")
num_str_1 = num_str[2:6]
print(num_str_1,'\n')

print("截取2到末尾索引的字符串")
num_str_1 = num_str[2:]
print(num_str_1,'\n')

print("截取0-6索引的字符串")
num_str_1 = num_str[0:6]
print(num_str_1,'\n')

print("截取0-6索引的字符串")
num_str_1 = num_str[:6]
print(num_str_1,'\n')

print("截取全部的字符串")
num_str_1 = num_str[:]
print(num_str_1,'\n')

print("截取全部的字符串,2为步长")
num_str_1=num_str[::2]
print(num_str_1,'\n')

print("截取从索引1开始的字符串,2为步长")
num_str_1=num_str[1::2]
print(num_str_1,'\n')

print("取最后的那个字符")
num_str_1=num_str[-1]
print(num_str_1,'\n')

print("截取从2索引开始的字符串,到倒数第二个字符为止")
num_str_1=num_str[2:-1]
print(num_str_1,'\n')

print("截取从右向左第二个开始的字符串,到该字符串的最后端")
num_str_1=num_str[-2:]
print(num_str_1,'\n')

print("截取从头开始的字符串,-1为步长")
num_str_1=num_str[0::-1]
print(num_str_1,'\n')

print("截取全部的字符串,-1为步长,即从右向左截取")  # 即逆序
num_str_1=num_str[::-1]
print(num_str_1,'\n')

公共方法

# max
# len
# del
# min
# slice 切片
# 字典无法进行切片
str = "abcdefg"
print(str)

print(len(str),"\n")

print(max(str),"\n")

print(min(str),"\n")

list_1 = [1,2,3,4,5,6]
list_1[1::2]
print(list_1[1::2])
# 列表的乘法
list_1 = [1,2]
list_1 = list_1*2
print(list_1)

# 字典同样无法做乘法

list_1 = [1,2]
list_1+=[3,4]
# 使用+号后会生成一个新的列表
# 而字符串的append(追加元素),extend(追加列表)函数则会把内容整合到原来的那个列表里去
print(list_1)

名片管理系统

主程序

import cards_tool

#  功能实现
# 1.欢迎界面
# 2.功能

while True:

    cards_tool.show_menu()
    a = input("请输入你要选择的功能:")
    print("你输入的操作代码是:", a)
    if a in ["1", "2", "3"]:

        #   新增名片
        if a=="1":
            cards_tool.new_card()
        #   pass
        #   显示全部
        elif a =="2":
            cards_tool.show_all()
        #   pass
        #   查询名片
        elif a=="3":
            cards_tool.search_card()
        #   pass
        #   pass仅仅是个占位符,保证程序的正确
        #   pass
        #   如果输入0则退出系统
    elif a == "0":
        print("欢迎再次使用【名片管理系统】")
        break
        #   pass关键字不会执行任何的操作
        #   pass
        #   输入的内容错误,让用户重新选择
    else:
        print("您输入的格式不正确,请重新输入!")

工具程序

def show_menu():
    """显示菜单"""
    print("*" * 50)
    print("欢迎使用名片管理系统 V1.0")
    print("")
    print("1.新增名片")
    print("2.显示全部")
    print("3.搜索名片")
    print("")
    print("0.退出系统")
    print("*" * 50)


#   使用字典的特性来保存一个物体的全部信息
card_list = []


def new_card():
    '''新增名片'''
    print("-" * 50)
    print("\t\t新增名片")
    print("-" * 50)

    # 1. 提示用户输入名片的详细信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    qq_str = input("请输入QQ:")
    email_str = input("请输入邮箱:")
    # 2. 使用用户输入的信息来建立一个名片字典
    card_temp = {"name": name_str,
                 "phone": phone_str,
                 "qq": qq_str,
                 "email": email_str
                 }
    # 3. 将名片字典添加到列表中
    card_list.append(card_temp)

    # print(card_list) 调试语句 可忽略
    # 4.
    print("添加 %s 的名片成功" % name_str)


def show_all():
    """显示所有的名片"""
    print("-" * 50)
    print("\t\t显示所有的名片")
    print("-" * 50)
    # 判断是否有名片记录
    if len(card_list) == 0:
        print("没有名片记录,请使用新建功能添加")

        # return 可以返回一个函数的执行结果
        # return 下方的代码不会被执行
        # 返回到调用函数的位置去
        # 不返回任何的结果
        return
    # 打印表头
    for name in ["姓名", "电话", "qq", "邮箱"]:
        print(name, end="\t\t\t")
    print()
    print("=" * 50)
    for card_temp in card_list:
        print("%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t" % (
        card_temp["name"], card_temp["phone"], card_temp["qq"], card_temp["email"]))

    print("=" * 50)


def search_card():
    """搜索名片"""
    print("-" * 50)
    print("\t\t搜索名片")
    print("-" * 50)
    # 1. 提示用户输入要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2. 遍历名片列表,查询要搜索的姓名,如果没有,需要提示用户
    for card_temp in card_list:

        if card_temp["name"] == find_name:
            print("找到了")
            print("姓名\t\t\t电话\t\t\tQQ\t\t\temail")
            print("=" * 50)
            print("%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t" % (
                card_temp["name"],
                card_temp["phone"],
                card_temp["qq"],
                card_temp["email"]))
            print("=" * 50)

            deal_card(card_temp)

            break

    else:
        print("抱歉,没找到")


def deal_card(card_temp):
    """
    处理名片的信息
    :param card_temp: 字典中的东西
    :return: 
    """
    # 1.提示用户进行什么操作

    # print(card_temp)
    action_str = input("请选择你要进行的操作  "
                       "[1] 修改 [2] 删除 "
                       "[0] 返回上一级菜单")
    if action_str == "1":
        # 修改操作
        card_temp["name"] = input_card_info(card_temp["name"], "name:")
        card_temp["phone"] = input_card_info(card_temp["phone"], "phone:")
        card_temp["qq"] = input_card_info(card_temp["qq"], "qq:")
        card_temp["email"] = input_card_info(card_temp["email"], "email")
        print("修改名片")

    elif action_str == "2":
        # 删除操作
        card_list.remove(card_temp)
        print("删除名片成功!")

    elif action_str == "0":
        return


def input_card_info(card_temp, tip_message):
    """
    输入名片信息
    :param card_temp: 字典中的原有的值
    :param tip_message: 输入的值
    :return: 
    """
    # 1.提示用户输入信息内容
    result_str = input(tip_message)

    # 2. 针对用户的输入进行判断,如果用户输入了内容,直接就返回结果
    if len(result_str) > 0:

        return result_str

    # 3.如果没有输入内容,返回字典中原有的值
    else:
        return card_temp

递归求阶乘

def factorial(number):

    if number <=1:
        return 1
    else:
        return number * factorial(number - 1)

# range函数生成从0 到 里面的数的值 - 1
for i in range(11):
    print("%2d! = %d"% (i,factorial(i)))

 

你可能感兴趣的:(Python学习记录)