Python零基础入门-1 从一行代码开始运行Python程序

简介: Python零基础入门-1 从一行代码开始运行Python程序

一、前言


Python语法简单,大多数情况下,根据单词的意思就可以猜测出程序的功能。在介绍Python语法之前,先看一些Pyhton代码的案例,这些案例都很简单,可以在PyChram中运行。(PyCharm的安装见上一篇,Python基础-0 Python简介及PyCharm安装 (qq.com))

打开PyCharm,我们直接新建一个Python文件,(右键工程文件夹(pythonProject)-->New-->Python File)

然后弹出窗口,给文件命名,这里命名为test,按回车创建。

于是工程文件夹下就多了一个test.py文件,我们就在这里写代码。

编写完成后,右键test.py运行。


二、从一行代码开始运行Python程序

代码来自:https://wiki.python.org/moin/SimplePrograms

1行:输出信息

代码:

print('Hello, world!')

运行结果:

Hello, world!

2行:输入信息

代码:

 
name = input('What is your name?\n')
print('Hi, %s.' % name)

运行后,PyCharm下面的控制台会打印提示消息,What is your name?

我们点一下这句话的下面,然后就可以输入名字了。

(输入完,按回车表示输入结束)

程序得到信息,并将该信息输出:

3行:for循环

代码:

 
friends = ['john', 'pat', 'gary', 'michael']
for i, name in enumerate(friends):
    print(f"friend {i} is {name}")

运行结果:

friend 0 is john

friend 1 is pat

friend 2 is gary

friend 3 is michael

4行:实现斐波那契数

代码:

 
parents, babies = (1, 1)
while babies < 100:
    print(f'This generation has {babies} babies')
    parents, babies = (babies, parents + babies)

运行结果:

This generation has 1 babies
This generation has 2 babies
This generation has 3 babies
This generation has 5 babies
This generation has 8 babies
This generation has 13 babies
This generation has 21 babies
This generation has 34 babies
This generation has 55 babies
This generation has 89 babies

5行:函数(Functions)(或者翻译为方法,功能)

代码:

def greet(name):
    print('Hello', name)
greet('Jack')
greet('Jill')
greet('Bob')

运行结果:

Hello Jack

Hello Jill

Hello Bob

6行:导入库,使用库的函数进行字符串匹配。

代码:

import re
for test_string in ['555-1212', 'ILL-EGAL']:
    if re.match(r'^\d{3}-\d{4}$', test_string):
        print(test_string, 'is a valid US local phone number')
    else:
        print(test_string, 'rejected')

运行结果:

555-1212 is a valid US local phone number

ILL-EGAL rejected

7行:字典,生成器表达式

代码:

prices = {'apple': 0.40, 'banana': 0.50}
my_purchase = {
    'apple': 1,
    'banana': 6}
grocery_bill = sum(prices[fruit] * my_purchase[fruit]
                   for fruit in my_purchase)
print(f'I owe the grocer {grocery_bill:.2f}$')

运行结果:

I owe the grocer 3.40$

8行:从命令行读入。程序实现了一个加法器

# This program adds up integers that have been passed as arguments in the command line
import sys
try:
    total = sum(int(arg) for arg in sys.argv[1:])
    print ('sum =', total)
except ValueError:
    print ('Please supply integer arguments')

为什么只有7行呢,因为第8行在命令行中输入:

python test.py 1 2 3 4

点击下面的Terminal,进入命令行,输入代码。执行test.py程序。

9行(#开头的注释不算,11-2=9):读取文件

代码:

# indent your Python code to put into an email
import glob
 
# glob supports Unix style pathname extensions
python_files = glob.glob('*.py')
for file_name in sorted(python_files):
    print('    ------' + file_name)
    with open(file_name) as f:
        for line in f:
            print('    ' + line.rstrip())
    print()

运行结果:

太长,输出了该目录下py文件内容。

10行:获取当前时间(不算activities及其上下空格,activities相当于是数据)

代码:

from time import localtime
 
activities = {8: 'Sleeping',
              9: 'Commuting',
              17: 'Working',
              18: 'Commuting',
              20: 'Eating',
              22: 'Resting' }
time_now = localtime()
hour = time_now.tm_hour
 
for activity_time in sorted(activities.keys()):
    if hour < activity_time:
        print (activities[activity_time])
        break
else:
    print ('Unknown, AFK or sleeping!')

运行结果:

我运行的时间是上午10:42,所以对应的是:

Working

11行:三引号字符串,while循环

代码:

 
REFRAIN = '''
%d bottles of beer on the wall,
%d bottles of beer,
take one down, pass it around,
%d bottles of beer on the wall!
'''
bottles_of_beer = 9
while bottles_of_beer > 1:
    print(REFRAIN % (bottles_of_beer, bottles_of_beer,
                     bottles_of_beer - 1))
    bottles_of_beer -= 1 

运行结果:

太长。每次句子中的bottles_of_beer减一。

12行:类。创建一个银行账户,进行存钱取钱。

代码:

class BankAccount(object):
    def __init__(self, initial_balance=0):
        self.balance = initial_balance
    def deposit(self, amount):
        self.balance += amount
    def withdraw(self, amount):
        self.balance -= amount
    def overdrawn(self):
        return self.balance < 0
my_account = BankAccount(15)
my_account.withdraw(50)
print (my_account.balance, my_account.overdrawn())

运行结果:

-35 True

13行:使用unittest进行单元测试(Unit testing)。下面代码测试了一个取中位数的功能median。

self.assertEqual(median([2, 9, 9, 7, 9, 2, 4, 5, 8]), 7)语句,是判断函数median的结果是否和预期结果7相同。

代码:

import unittest
def median(pool):
    copy = sorted(pool)
    size = len(copy)
    if size % 2 == 1:
        return copy[int((size - 1) / 2)]
    else:
        return (copy[int(size/2 - 1)] + copy[int(size/2)]) / 2
class TestMedian(unittest.TestCase):
    def testMedian(self):
        self.assertEqual(median([2, 9, 9, 7, 9, 2, 4, 5, 8]), 7)
if __name__ == '__main__':
    unittest.main()

运行结果:

 
D:/PY_TEST/pythonProject/test.py
Testing started at 10:49 ...
Launching unittests with arguments python -m unittest D:/PY_TEST/pythonProject/test.py in D:\PY_TEST\pythonProject
 
 
 
Ran 1 test in 0.002s
 
OK

14行:文档测试( Doctest-based testing

def median(pool):
    '''Statistical median to demonstrate doctest.
    >>> median([2, 9, 9, 7, 9, 2, 4, 5, 8])
    6 #change to 7 in order to pass the test
    '''
    copy = sorted(pool)
    size = len(copy)
    if size % 2 == 1:
        return copy[int((size - 1) / 2)]
    else:
        return (copy[int(size/2 - 1)] + copy[int(size/2)]) / 2
if __name__ == '__main__':
    import doctest
    doctest.testmod()

运行结果:错误,预期 6 #change to 7 in order to pass the test,得到值7。

Failure
<Click to see difference>
 
**********************************************************************
File "D:\PY_TEST/pythonProject\test.py", line 3, in test.median
Failed example:
    median([2, 9, 9, 7, 9, 2, 4, 5, 8])
Expected:
    6 #change to 7 in order to pass the test
Got:
    7

说明文档错误,修改代码第4行:

def median(pool):
    '''Statistical median to demonstrate doctest.
    >>> median([2, 9, 9, 7, 9, 2, 4, 5, 8])
    7
    '''
    copy = sorted(pool)
    size = len(copy)
    if size % 2 == 1:
        return copy[int((size - 1) / 2)]
    else:
        return (copy[int(size/2 - 1)] + copy[int(size/2)]) / 2
if __name__ == '__main__':
    import doctest
    doctest.testmod()

Testing started at 10:57 ...

Process finished with exit code 0

相关文章
|
2天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
3天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
3天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
15 5
|
1天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
|
3天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
13 4
|
5天前
|
缓存 开发者 Python
探索Python中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
3天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
12 2
|
1天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
3天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
17 4