网上搜“python支持中文吗”,答案基本上是:“python是没有中文版的”,或者“Python的发行版至今尚未包括任何中文支持模块”之类,总之“不支持中文”。
但是基于以下知识和事实,还是可以测试用中文编写Python程序。
一、中文变量名
Python3.x 已经支持全面 Unicode 编码,支持使用中文作为变量名。那是不是所有中文都可以作为变量名呢?
先来看一下Python的测试、判断字符串类型的测试方法:isalpha、isdigit、isdecimal、isnumeric、isalnum、isidentifier,本篇介绍Python字符串测试用例的字符列表strVar如下:
strVar=['ABCabc', # 纯字母
'123456', # 纯数字
'1.2345', # 带小数点纯数字
'①②③', # 带圈的数字编号
'⑴⑵⑶', # 带括号的数字编号(中文)
'⒈⒉⒊', # 带点的数字编号(中文)
'一二三', # 汉字数字(中文)
'壹贰叁', # 汉字大写数字(中文)
'ⅠⅡⅨ', # 汉字罗马数字(中文)
'129', # 全角数字
'Aa汉字', # 字母+汉字
'①2345', # 数字编号与数字混合
'ABab②', # 字母+数字编号
'ABab12', # 字母+数字
'Aa汉12', # 字母汉字+数字
'¡¢£¤®µ', # 扩展ASCII(128~254)、ISO 8859-1字符
'%#@$&,'] # 特殊符号
在本例中的字符串测试采用表1中的各种方法,对列表strVar中的每一个元素(字符串)进行测试,并输出对应的测试结果。所有测试结果汇总于表1中。测试程序如下:
for chrt in strVar:
print(chrt, chrt.方法,end='\t')
从表1中可以发现:带圈数字、带括号数字、带点数字不能出现在变量名中,全角数字与数字相同不能出现在变量首部。
二、函数是对象
秉承着一切皆对象的理念,函数也是一个对象,具有属性(可以使用dir()查询)。作为对象,它还可以赋值给其它对象名,或者作为参数传递。
本篇举二个例子。
【示例1】输入三角形的三条边长,计算三角形的面积。根据海伦公式则三角形的面积公式,令p=(a+b+c)/2,则面积:
a = float(input('输入三角形第一边长: '))
b = float(input('输入三角形第二边长: '))
c = float(input('输入三角形第三边长: '))
# 计算半周长
s = (a + b + c) / 2
# 计算面积
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('三角形面积为 %0.2f' %area)
用中文编写的程序如下:
from math import sqrt as 开平方
输入 = input
输出 = print
对 = True
错 = False
转浮点数 = float
第一边长 = 转浮点数(输入('输入三角形第一边长: '))
第二边长 = 转浮点数(输入('输入三角形第二边长: '))
第三边长 = 转浮点数(输入('输入三角形第三边长: '))
半周长 = (第一边长 + 第二边长 + 第三边长) / 2
面积 = 开平方(半周长*(半周长-第一边长)*(半周长-第二边长)*(半周长-第三边长))
输出('三角形面积为%0.2f' % 面积)
运行结果:
【示例2】使用while语句实现不定次循环时输出循环次数。使用while语句,实现猜数字游戏,要求每次只有5次机会,当机会用完,还没有猜对时,结束程序并且提示“您的机会已用完。”
一般情况下的编写的程序如下:
import random # 导入随机数模块
def eq(value, number):
if value > number:
print('您猜大了!')
return False
elif value < number:
print('您猜小了!')
return False
else:
print('恭喜您,猜对了!')
return True
number = random.randint(1, 100) # 生成1~100之间的随机整数
count = 0 #次数
while count < 5: # 条件循环
count += 1
value = int(input('请输入100以内的数字:')) # 输入数字
if eq(value, number):
break # 猜对退出循环
else:
print('您的机会已用完。')
用中文编写的程序如下:
from random import randint as 随机整数
输入 = input
输出 = print
对 = True
错 = False
取整 = int
def 相等否(数1, 数2):
if 数1 < 数2:
输出('您猜小了')
return 错
if 数1 > 数2:
输出('您猜大了')
return 错
if 数1 == 数2:
输出('恭喜您,猜对了!')
return 对
被猜数 = 随机整数(1, 100) # 生成1~100之间的随机整数
计数 = 0
while 计数 < 5: # 条件循环
计数 += 1
猜测值 = 取整(输入('请输入100以内的数字:'))
if 相等否(猜测值, 被猜数):
break # 猜对退出循环
else:
输出('您的机会已用完。')
运行结果: