用户输入
- 在这里python不像 c c++ Java 等语言定义变量的时候要先在变量前声明数据类型 , 而是直接写变量就行。例如,c++语言要定义一个username 和 password 的变量来接受用户输入的账户和密码,其写法是
#include<string>
#include<algorithm>
#include<iostream>
using namespaces std
int main(){
String username;
String password;
cin >> username;
cin >> password;
cout << username << endl << password;
}
然而用python 就完全没必要这么麻烦了, 还得写头文件 声明数据类型之类的。。。。python完全不用 下面是python 的写法:
username = input("please input username:")
password = input("please input password:")
是不是感觉很牛b 短短两句话 就把c++ 那要写十几行代码的功能实现了。按照我的理解:input() 是调用用户输入的接口 里边可以写提示语 “please input…” ,用户输入什么类型的数据 那么 这个username的数据类型就是啥样的。但是后来证明这个想法是有很大瑕疵的,就比如说 我要从键盘接受一个int 型的数据
a = input("please input integer for a:")
b = input("please input integer for b:")
print(a+b)
运行结果
2 + 2 = 22 这是什么鬼! 很明显,python把 a,b当成字符串处理了 ,所以我们在处理这类数据之前,要把它进行强制转换
a = int(input("please input integer for a:"))
b = int(input("please input integer for b:"))
print(a+b)
达到期望!!!
我们在用c时 数据只用强制转换一次就行了 但是python不行 你需要什么类型的数据,每次对变量进行操作之后 都需要进行一次强制转换!!!最好的例子就是gcd 我在写gcd时根本没想到会出错 导致程序奔溃 一直检查不出来 直到将gcd的结果输出之后。。。。。
- 接着说我们的那个password 如果我们直接 用input() 的话 那岂不是我的密码都被看见了,别着急 这个小方法来救你
password = getpass.getpass("password:")
效果图图就不放 了 因为 我演砸 了 没有这个效果 好像是在python 2.x 版本的???QWQ
输出
- 输出更简单 这次我们来跟 c 语言做对比(别问为什么。。。)先看 c
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
printf("%d\n",a);
}
再来看py (python 简称 下同)
username = input("username:")
print(username)
差距不大 但是写法简单!!!
2. 其实py 的print() 这的是啥都可以输出 不管你是什么数据类型;就比如说 一个字型的数据 ch print(ch) 会把里头的所有 键—值 都输出 这个觉得好牛逼
数据类型
数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
布尔值
真或假
0或一
非0即真
字符串
str = "Holle World"
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化输出
name = "abc"
print "i am %s " % name
PS: 字符串是 %s;整数 %d;浮点数%f
字符串常用功能:
- 移除空白
- 分割
- 长度
- 索引
- 切片
列表
创建列表:
name_list = ['abc', 'seven', 'eric']
或
name_list = list(['abc', 'seven', 'eric'])
基本操作:
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
元祖(不可变列表)
创建元组:
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
字典(无序)
创建字典:
person = {"name": "abc", 'age': 18}
或
person = dict({"name": "abc", 'age': 18})
常用操作:
- 索引
- 新增
- 删除
- 键 值 键值对
- 循环
- 长度
循环
- for 循环 先写一个简单的循环
for i in range(10):
print("time:",i)
for 循环跟 c 语言里的差不多 ,只是循环的条件限制用 range() 来约束 循环逻辑自己写自己的就行了
2. while 循环 还是没事说的 跟 c 语言的用法没啥区别 还是展示的一个跑死机器的代码吧
count = 0
while True:
print("你是风儿我是沙,缠缠绵绵到天涯...",count)
count +=1
这两种循环的简单日常用法就这样了 当然还用一些奇葩用法 还需要去探索。。。。
分支
- 双分支
这里就做一个简单的登陆验证的来了解双分支
username = input()
password = input()
if username == "小明" and password == "123"
print("Success")
else:
print("Faile")
- 多分支
res = input()
if res >= 90:
print("优秀")
elif res >= 80:
print("良好")
elif res >=70:
print("还行")
else:
print("滚吧")