方法一:多次调用input

1. 代码

a = list(map(int,input().split(" ")))

方法来源:python怎么在键盘上一次输入多个整数

方法二:调用C标准库

1. 代码

from ctypes import *
# Windows下:
libc = cdll.msvcrt
# Linux下: libc = CDLL("libc.so.6") msg = [c_int(),c_int()]
libc.scanf(b"%d%d", byref(msg[0]),byref(msg[1])) print(msg[0].value,msg[1].value)

参考:ctypes — Python 的外部函数库官网的“传递指针(或以引用方式传递形参)”。

c_int()初始化变量,byref()取地址(相当于&符号)。
官方文档:ctypes.pointerctypes.byref都可以进行取地址,但是ctypes.pointer会创建指针对象,操作更多。像使用c语言中的scanf来获取输入,就需要存储地址,使用byref就足够了。

注意:所有的字符串都要用二进制的字符串,也就是前面要加个b

2. 残留的问题(int数组取元素)

理论上,用ctypes的int数组会更正确一些,但是我没办法取到int数组的后面的地址。
注意:通过value方法获取值、用msg[0]获取元素只适用于字符数组,对于int数组,msg[0]得到的就是value……麻,太不合理了。
如:msg = (c_int()*2)(999,888)msg[0]并不是数组第一个元素,而是第一个值999。我已经麻了,真查不到。如果有查到怎么取数组元素的朋友,请在评论区告诉我该怎么做qwq。

附:计算时间差的程序(使用实例)

第一种读取方式:

import datetime

def showTime(now,level):
Str=""
if(level==1):
Str=str(now.hour)+':'+str(now.minute)
print(Str) # 间隔数组,年-月-日-时-分-秒-毫秒,数组单位,显示级别
def timeInterval(interval,begin_y=2010,begin_m=1,begin_d=1,begin_hh=0, begin_mm=0,begin_s=0,begin_ms=0,unit=1,level=1):
now=datetime.datetime(begin_y,begin_m,begin_d,begin_hh, begin_mm,begin_s,begin_ms)
showTime(now,level)
for any in a:
now=now + datetime.timedelta(minutes=any)
showTime(now,level) begin_h, begin_m=list(map(int,input("起始:").split(" ")))
a=list(map(int,input("间隔:").split(" ")))
timeInterval(a, begin_hh=begin_h, begin_mm=begin_m)

第二种读取输入方式:

import datetime

def showTime(now,level):
Str=""
if(level==1):
Str=str(now.hour)+':'+str(now.minute)
print(Str) # 间隔数组,年-月-日-时-分-秒-毫秒,数组单位,显示级别
def timeInterval(interval,begin_y=2010,begin_m=1,begin_d=1,begin_hh=0, begin_mm=0,begin_s=0,begin_ms=0,unit=1,level=1):
now=datetime.datetime(begin_y,begin_m,begin_d,begin_hh, begin_mm,begin_s,begin_ms)
showTime(now,level)
for any in a:
now=now + datetime.timedelta(minutes=any)
showTime(now,level) from ctypes import *
# Windows下:
libc = cdll.msvcrt
# Linux下: libc = CDLL("libc.so.6") print("起始:",end='')
begin_h, begin_m = [c_int(),c_int()]
libc.scanf(b"%d%d", byref(begin_h),byref(begin_m)) a=list(map(int,input("间隔:").split(" ")))
timeInterval(a, begin_hh=begin_h.value, begin_mm=begin_m.value)

运行结果:

【经验】Python3|输入多个整数(map方法或ctypes调用C标准库scanf)的更多相关文章

  1. 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)

    要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...

  2. python3.x pool.map方法的实质

    我使用多进程的一般方式,都是multiprocessing模块中的Pool.map()方法.下面写一个简单的示例和解析.至于此种方法使用多进程的效率问题,还希望大佬予以指正. 示例: "&q ...

  3. python018 Python3 输入和输出

    Python3 输入和输出在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化Python两种输出值的方式: 表达式语句 ...

  4. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  5. 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★

    第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 我的思路: 从小 ...

  6. 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。

    看完两个求最大值算法之后的一些感想. 如果想直接看算法的可以跳过.但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的. 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功 ...

  7. 基于查表的整数霍夫变换方法实现(matlab)

    暂时先用matlab把算法弄一下,这是基于查表的整数霍夫变换方法实现及解释. 接着再实现FPGA的霍夫变换. 霍夫变换原理和算法这里不多说,可参考以下链接: http://blog.csdn.net/ ...

  8. 输入三个整数x、y、z,请把这三个数由小到大输出

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

  9. parseInt和map方法使用案例分析

    ["1","2","3"].map(parseInt) //[1,NaN,NaN] 先看map()方法 定义和用法 map() 方法返回一个 ...

  10. jQuery与JS中的map()方法使用

    1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...

随机推荐

  1. .Net对接Java接口加密不通过?

    前言   相信又不少小伙伴在对接第三方接口时遇到过这种情况:参数.排序.加密方式都按照接口文档进行处理了,可就是签名不通过,然后开始怀疑是不是参数漏了?参与加密的参数不对?还是加密方式有问题?最后一顿 ...

  2. 如何正确配置 .gitignore 以忽略特定文件夹下的文件(除指定子文件夹外)

    在使用 Git 进行版本控制时,.gitignore 文件是一个非常有用的工具,可以帮助我们忽略不需要跟踪的文件或文件夹.然而,有时我们需要忽略某个文件夹下的所有内容,但保留其中的某个子文件夹.本文将 ...

  3. flutter-解决长按TextField出现英文(复制粘贴)问题

    第一步 引入依赖 dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter 第二步 在main.dart中添加代码 ...

  4. linux的使用(3)

    1.tar 包 压缩和解压 (1)tar -cvf 打包 (2)tar -xvf 解压压缩包 图片 (3)tar.gz 打包 案例:tar -zcvf ys.tar.gz aa bb hh tt (4 ...

  5. 解决 Docker 安装时“无法获取 dpkg 前端锁”错误的有效方法

    在安装 Docker 的过程中,不少用户可能会遇到"无法获取 dpkg 前端锁"的错误提示.这是一个较为常见但也令人困扰的问题.下面为您详细介绍几种可能的解决方法: 方法一:检查并 ...

  6. Processing多窗口程序范例(一)

    Processing学习到一定程度必定会关注源码,关注扩展功能,其中窗口创建是值得关注的技术点(实现多窗口).下面就以一个简单范例来展开讨论. 范例代码 主程序先上: package syf.demo ...

  7. ARC101E题解

    前言 此片题解大致按照笔者做题思路进行讲解. 简要题意 有一棵树,树上有偶数个节点.你需要给这些点两两配对,一组已经配对的点会将两点之间的树边进行一次覆盖.一组合法方案需要满足树上所有边都被覆盖至少一 ...

  8. 洛谷P3755 [CQOI2017] 老C的任务 题解

    前言:这个分块和刚被撤下的不同,因为这个分块时间复杂度正确,能通过所有 hack. 题目传送门. 有没有什么可以不用离线都能解决问题的简单算法?答案是分块!! 60pts 首先遇到这个题目,先写一个比 ...

  9. Netty基础—3.基础网络协议

    大纲 1.网络基础的相关问题总结 2.七层模型和四层模型 3.物理层(网线 + 光缆 + 01电信号) 4.数据链路层(以太网协议 + 网卡mac地址) 5.网络层(IP协议 + 子网划分 + 路由器 ...

  10. PHP的回调函数

    所谓的回调函数,就是指调用函数时并不是向函数中传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中,这个作为参数的函数就是回调函数.通俗的来说,回调函数也是一个我们定义的函数,但是不 ...