python3的数据类型转换问题
问题描述:在自我学习的过程中,写了个登陆,在input处,希望能够对数据类型进行判断,但是因为python3的输入的数据会被系统默认为字符串,也就是1,1.2,a。都会被系统默认为字符串,这个心塞啊,难受啊。我不接受强制类型转换,先贴代码,供大家参考,希望大神能够给出优化代码。多谢
ps:来自某小白的问题
#!/user/bin/env python
#coding:utf-8 #Author:shenqiang
import json '''分离用户名输入和密码输入的函数'''
def infoUsername():
'''
输入用户名
:return: username 用户名
'''
username = input('请输入您注册的用户名:\n')
return username def infoPassword():
'''
输入密码
:return:password 密码
'''
password = input('请输入您注册的密码:\n')
return password '''
注册
'''
def register(username,password):
'''
注册
:parameter: username 用户名
:parameter:password 密码
:return:
'''
temp = username+'|'+password
'''改写,序列化和反序列化'''
json.dump(temp,open('login', 'w'))
# f = open('login','w')
# f.write(temp)
print('恭喜{0},注册成功!'.format(username)) '''
1。模拟登陆
2。模拟登陆成功后,用户现实登陆状态
3。模拟注册
'''
def login(username,password):
'''
登陆
:param username:登陆系统的账号
:param password:登陆系统的账号的密码
:return: True:登陆成功 False:登陆失败
'''
# f = open('login','r') '''改写,序列化和反序列化'''
f = str(json.load(open('login','r')))
list1 = f.split('|')
if list1[0] == username and list1[1] == password:
return True
else:
return False # for line in f:
# # 将字符串转化成列表
# list = line.split('|')
# if list[0] == username and list[1] == password:
# return True
# else:
# return False '''
查询用户信息
'''
def info(username,password):
'''拿到文件的用户名和密码''' # lines = open('login','r')
# for line in lines:
# list1 = line.split('|') '''改写,序列化和反序列化'''
f = str(json.load(open('login', 'r')))
list1 = f.split('|')
'''验证用户等登陆是否成功'''
r = login(username,password)
if r:
print('登陆成功!用户昵称为:{0}'.format(list1[0]))
else:
print('登陆失败!请检查您的账号和密码!') '''
退出系统
'''
def exit():
'''退出系统'''
import sys
sys.exit(1)
print('您已退出该系统!') '''
主函数
'''
def main():
'''调用上面的方法和属性'''
while True:
try:
# t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
'''
python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
'''
print(type(t))
if isinstance(t,float):
t = int(t)
if isinstance(t,str):
if len(t)==1:
t = ord(t)
except Exception as e:
print(e.args)
else:
if t == 1:
username = infoUsername()
password = infoPassword()
register(username,password)
elif t == 2:
username = infoUsername()
password = infoPassword()
login(username,password)
info(username,password)
elif t == 3:
exit()
else:
print('输入错误,请重新输入!')
finally:
print('') if __name__ == '__main__':
main()
问题部分:
'''
主函数
'''
def main():
'''调用上面的方法和属性'''
while True:
try:
# t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
t = int(input('1。注册;2。登陆;3。退出登陆 \n'))
'''
python3输入的整型,浮点型,字符串。都是被系统默认是字符串.下面代码失效
'''
print(type(t))
if isinstance(t,float):
t = int(t)
if isinstance(t,str):
if len(t)==1:
t = ord(t)
except Exception as e:
print(e.args)
else:
if t == 1:
username = infoUsername()
password = infoPassword()
register(username,password)
elif t == 2:
username = infoUsername()
password = infoPassword()
login(username,password)
info(username,password)
elif t == 3:
exit()
else:
print('输入错误,请重新输入!')
finally:
print('') if __name__ == '__main__':
main()
python3的数据类型转换问题的更多相关文章
- 简谈-Python的输入、输出、运算符、数据类型转换
输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中, ...
- Python基础之模块、数据类型及数据类型转换
一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印 ...
- python中数据类型转换
python中list和str互转 1.list转str 假设有一个名为test_list的list,转换后的str名为test_str 则转换方法: test_str = "" ...
- python3 raw 数据转换为jpg
python3 raw 数据转换为jpg 我们大家都知道,sensor 直接出来的裸数据为raw 数据,没有经过编解码,压缩. 我们需要将raw数据转换为其他格式比如jpg,png,bmp 人眼才能看 ...
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
- Sql Server函数全解<三>数据类型转换函数和文本图像函数
阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...
- JS 数据类型转换
JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...
- 使用变量 数据类型转换 逻辑控制语句(begin ...end; case...end; if...else; while)
一:变量 变量分为局部变量和全局变量 (全局变量是系统自定的,是不可手动给值的,若想自己定义全局变量可考虑创建全局临时表!) 局部变量的定义: declare @变量名 数据类型 (局部变量只能 ...
- Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)
上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...
随机推荐
- 重载(overloading)和重写@Override
一.重写:@Override 定义:字类方法覆盖父类方法,通俗来说就是方法里面的内容可以不一样,其他都一样. (1)必须保证权限大于等于父类的权限public>protetcted>默认& ...
- LA 6621 /ZOJ 3736 Pocket Cube 打表+暴力
这道题是长沙区域赛的一道简单题,当时题目在ZOJ重现的时候就做了一次,但是做的好复杂,用的BFS暴力,而且还没打表,最后还是莫名其妙的爆栈错误,所以就一直没弄出来,昨天做到大白书上例题05年东京区域赛 ...
- error: snap "electronic-wechat" has "install-snap" change in progress
今天因为要使用 wechat ,但是因为 wechat 并没有官方的 Ubuntu 版本,幸好有大神出了 electronic-wechat ,可以直接在应用商店中搜到,然后直接安装,也可以命令行安装 ...
- RE数组开多大?
#include<iostream> using namespace std; ][]; int main() { int n, m; ; i <= ; i++) { a[][i] ...
- MySQL--SHOW TABLE STATUS命令
show table status 获取表的信息 来自:http://blog.csdn.net/java2000_wl/article/details/7935035
- Prometheus监控系统之入门篇(一)续
在上篇Prometheus监控系统之入门篇(一)中我们讲解了Prometheus的基本架构和工作流程, 并从0到1搭建了Prometheus服务,pushgateway以及告警系统. 本篇我们主要介绍 ...
- 填平新版本Xcode安装插件不成功的坑
一般情况下,安装xcode不成功现象基本上都出现在更新xcode或者重装之后出现的情况,下面原理性德东西,我就不赘述了,度娘上很容易看到,通过这段只是希望大家花费尽量少得时间将xcode插件安装成功. ...
- 蓝桥杯 K好数(dp)
Description 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.1 ...
- tomcat高并发配置
最近在项目中负责Tomcat高并发优化方案写一写新得. 优化1)tomcat默认的并发是75,可以启用线程池根据生产环境硬件设定线程池大小. <Executor name="tomca ...
- java centos7 gcc编码 解决socket通信 汉字乱码
1.把 Java eclipes 设置编码成utf-8 windows->preference->workspace 2.centos7 gcc 默认为utf-8